# Lifecycle

Summary:[Nested Classes](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle#nestedclasses)\|[Ctors](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle#pubctors)\|[Methods](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle#pubmethods)\|[Inherited Methods](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle#inhmethods)  

# Lifecycle

| The`android.arch`Architecture Components packages are no longer maintained. They have been superseded by the corresponding[androidx.\*](https://developer.android.com/jetpack/androidx/migrate)packages. See[androidx.lifecycle.Lifecycle](https://developer.android.com/reference/androidx/lifecycle/Lifecycle)instead.

`
public


abstract
class
Lifecycle
`  
`

extends Object


``


`

|---|----------------------------------|
| java.lang.Object                    ||
| ↳ | android.arch.lifecycle.Lifecycle |

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Known direct subclasses [LifecycleRegistry](https://developer.android.com/reference/android/arch/lifecycle/LifecycleRegistry) |-------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------| | [LifecycleRegistry](https://developer.android.com/reference/android/arch/lifecycle/LifecycleRegistry) | An implementation of[Lifecycle](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle)that can handle multiple observers. | |

<br />

*** ** * ** ***

Defines an object that has an Android Lifecycle.[Fragment](https://developer.android.com/reference/android/support/v4/app/Fragment)and[FragmentActivity](https://developer.android.com/reference/android/support/v4/app/FragmentActivity)classes implement[LifecycleOwner](https://developer.android.com/reference/android/arch/lifecycle/LifecycleOwner)interface which has the[getLifecycle](https://developer.android.com/reference/android/arch/lifecycle/LifecycleOwner#getLifecycle())method to access the Lifecycle. You can also implement[LifecycleOwner](https://developer.android.com/reference/android/arch/lifecycle/LifecycleOwner)in your own classes.

[ON_CREATE](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle.Event#ON_CREATE),[ON_START](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle.Event#ON_START),[ON_RESUME](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle.Event#ON_RESUME)events in this class are dispatched**after** the[LifecycleOwner](https://developer.android.com/reference/android/arch/lifecycle/LifecycleOwner)'s related method returns.[ON_PAUSE](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle.Event#ON_PAUSE),[ON_STOP](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle.Event#ON_STOP),[ON_DESTROY](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle.Event#ON_DESTROY)events in this class are dispatched**before** the[LifecycleOwner](https://developer.android.com/reference/android/arch/lifecycle/LifecycleOwner)'s related method is called. For instance,[ON_START](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle.Event#ON_START)will be dispatched after[onStart](https://developer.android.com/reference/android/app/Activity.html#onStart())returns,[ON_STOP](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle.Event#ON_STOP)will be dispatched before[onStop](https://developer.android.com/reference/android/app/Activity.html#onStop())is called. This gives you certain guarantees on which state the owner is in.

If you use**Java 8 Language** , then observe events with[DefaultLifecycleObserver](https://developer.android.com/reference/android/arch/lifecycle/DefaultLifecycleObserver). To include it you should add`"android.arch.lifecycle:common-java8:<version>"`to your build.gradle file.  

```
 class TestObserver implements DefaultLifecycleObserver {
     @Override
     public void onCreate(LifecycleOwner owner) {
         // your code
     }
 }
 
```
If you use**Java 7 Language** , Lifecycle events are observed using annotations. Once Java 8 Language becomes mainstream on Android, annotations will be deprecated, so between[DefaultLifecycleObserver](https://developer.android.com/reference/android/arch/lifecycle/DefaultLifecycleObserver)and annotations, you must always prefer`DefaultLifecycleObserver`.  

```
 class TestObserver implements LifecycleObserver {
   @OnLifecycleEvent(ON_STOP)
   void onStopped() {}
 }
 
```

Observer methods can receive zero or one argument. If used, the first argument must be of type[LifecycleOwner](https://developer.android.com/reference/android/arch/lifecycle/LifecycleOwner). Methods annotated with[ON_ANY](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle.Event#ON_ANY)can receive the second argument, which must be of type[Lifecycle.Event](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle.Event).  

```
 class TestObserver implements LifecycleObserver {
   @OnLifecycleEvent(ON_CREATE)
   void onCreated(LifecycleOwner source) {}
   @OnLifecycleEvent(ON_ANY)
   void onAny(LifecycleOwner source, Event event) {}
 }
 
```
These additional parameters are provided to allow you to conveniently observe multiple providers and events without tracking them manually.

<br />

## Summary

|                                                      ### Nested classes                                                      ||
|---------|---------------------------------------------------------------------------------------------------------------------|
| ` enum` | [Lifecycle.Event](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle.Event) <br />            |
| ` enum` | [Lifecycle.State](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle.State) Lifecycle states. |

|                                           ### Public constructors                                            ||
|-----------------------------------------------------------------------------------------------------------|---|
| ` `[Lifecycle](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle#Lifecycle())`() ` |

|                                                                                                                                                                                                                             ### Public methods                                                                                                                                                                                                                             ||
|---------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` abstract void`                                                                                              | ` `[addObserver](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle#addObserver(android.arch.lifecycle.LifecycleObserver))`(`[LifecycleObserver](https://developer.android.com/reference/android/arch/lifecycle/LifecycleObserver)` observer) ` Adds a LifecycleObserver that will be notified when the LifecycleOwner changes state. |
| ` abstract `[Lifecycle.State](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle.State) | ` `[getCurrentState](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle#getCurrentState())`() ` Returns the current state of the Lifecycle.                                                                                                                                                                                           |
| ` abstract void`                                                                                              | ` `[removeObserver](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle#removeObserver(android.arch.lifecycle.LifecycleObserver))`(`[LifecycleObserver](https://developer.android.com/reference/android/arch/lifecycle/LifecycleObserver)` observer) ` Removes the given observer from the observers list.                             |

| ### Inherited methods |
|-----------------------|---|
| From class` java.lang.Object ` |-------------------|-------------------------------| | ` Object`         | ` clone() `                   | | ` boolean`        | ` equals(Object arg0) `       | | ` void`           | ` finalize() `                | | ` final Class<?>` | ` getClass() `                | | ` int`            | ` hashCode() `                | | ` final void`     | ` notify() `                  | | ` final void`     | ` notifyAll() `               | | ` String`         | ` toString() `                | | ` final void`     | ` wait(long arg0, int arg1) ` | | ` final void`     | ` wait(long arg0) `           | | ` final void`     | ` wait() `                    | ||

## Public constructors

### Lifecycle

```
Lifecycle ()
```

<br />

<br />

## Public methods

### addObserver

```
void addObserver (LifecycleObserver observer)
```

Adds a LifecycleObserver that will be notified when the LifecycleOwner changes state.

The given observer will be brought to the current state of the LifecycleOwner. For example, if the LifecycleOwner is in[STARTED](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle.State#STARTED)state, the given observer will receive[ON_CREATE](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle.Event#ON_CREATE),[ON_START](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle.Event#ON_START)events.

<br />

|                           Parameters                            ||
|------------|-----------------------------------------------------|
| `observer` | `LifecycleObserver`: The observer to notify. <br /> |

### getCurrentState

```
Lifecycle.State getCurrentState ()
```

Returns the current state of the Lifecycle.

<br />

|                                                                    Returns                                                                    ||
|---------------------------------------------------------------------------------------------------|--------------------------------------------|
| [Lifecycle.State](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle.State) | The current state of the Lifecycle. <br /> |

### removeObserver

```
void removeObserver (LifecycleObserver observer)
```

Removes the given observer from the observers list.

If this method is called while a state change is being dispatched,

- If the given observer has not yet received that event, it will not receive it.
- If the given observer has more than 1 method that observes the currently dispatched event and at least one of them received the event, all of them will receive the event and the removal will happen afterwards.

<br />

<br />

|                             Parameters                              ||
|------------|---------------------------------------------------------|
| `observer` | `LifecycleObserver`: The observer to be removed. <br /> |

-

  ## Annotations

  - [OnLifecycleEvent](https://developer.android.com/reference/android/arch/lifecycle/OnLifecycleEvent)
-

  ## Interfaces

  - [DefaultLifecycleObserver](https://developer.android.com/reference/android/arch/lifecycle/DefaultLifecycleObserver)
  - [LifecycleObserver](https://developer.android.com/reference/android/arch/lifecycle/LifecycleObserver)
  - [LifecycleOwner](https://developer.android.com/reference/android/arch/lifecycle/LifecycleOwner)
  - [LifecycleRegistryOwner](https://developer.android.com/reference/android/arch/lifecycle/LifecycleRegistryOwner)
  - [Observer](https://developer.android.com/reference/android/arch/lifecycle/Observer)
  - [ViewModelProvider.Factory](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProvider.Factory)
  - [ViewModelStoreOwner](https://developer.android.com/reference/android/arch/lifecycle/ViewModelStoreOwner)
-

  ## Classes

  - [AndroidViewModel](https://developer.android.com/reference/android/arch/lifecycle/AndroidViewModel)
  - [Lifecycle](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle)
  - [LifecycleRegistry](https://developer.android.com/reference/android/arch/lifecycle/LifecycleRegistry)
  - [LifecycleService](https://developer.android.com/reference/android/arch/lifecycle/LifecycleService)
  - [LiveData](https://developer.android.com/reference/android/arch/lifecycle/LiveData)
  - [LiveDataReactiveStreams](https://developer.android.com/reference/android/arch/lifecycle/LiveDataReactiveStreams)
  - [MediatorLiveData](https://developer.android.com/reference/android/arch/lifecycle/MediatorLiveData)
  - [MutableLiveData](https://developer.android.com/reference/android/arch/lifecycle/MutableLiveData)
  - [ProcessLifecycleOwner](https://developer.android.com/reference/android/arch/lifecycle/ProcessLifecycleOwner)
  - [ServiceLifecycleDispatcher](https://developer.android.com/reference/android/arch/lifecycle/ServiceLifecycleDispatcher)
  - [Transformations](https://developer.android.com/reference/android/arch/lifecycle/Transformations)
  - [ViewModel](https://developer.android.com/reference/android/arch/lifecycle/ViewModel)
  - [ViewModelProvider](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProvider)
  - [ViewModelProvider.AndroidViewModelFactory](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProvider.AndroidViewModelFactory)
  - [ViewModelProvider.NewInstanceFactory](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProvider.NewInstanceFactory)
  - [ViewModelProviders](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProviders)
  - [ViewModelProviders.DefaultFactory](https://developer.android.com/reference/android/arch/lifecycle/ViewModelProviders.DefaultFactory)
  - [ViewModelStore](https://developer.android.com/reference/android/arch/lifecycle/ViewModelStore)
  - [ViewModelStores](https://developer.android.com/reference/android/arch/lifecycle/ViewModelStores)
-

  ## Enums

  - [Lifecycle.Event](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle.Event)
  - [Lifecycle.State](https://developer.android.com/reference/android/arch/lifecycle/Lifecycle.State)