生命周期是Google发行的Android体系结构组件之一,它使所有Android开发人员都可以更轻松地使用它。生命周期是一个类/接口,它保存有关活动/片段状态的信息,并且它还允许其他对象通过跟踪该状态来观察该状态。 LifeCycle组件与诸如Activity或Fragment之类的组件的Android LifeCycle事件有关,它具有三个主要的类,我们将处理这些类:
- 生命周期
- 生命周期所有者
- 生命周期观察者
1.生命周期
生命周期是一个告诉我们有关活动/片段执行的事件的过程。作为类,我们有一个生命周期,它具有两种类型的枚举来跟踪组件,即状态和事件。事件和状态用于确定生命周期。每个事件都有其自己的状态。
Event |
State |
---|---|
OnCreate() | Called when the activity is first created. |
OnStart() | Called when the activity becomes visible to the user. |
OnResume() | Called when the activity starts interacting with the user. |
OnPause() | Called when the current activity is being paused and the previous activity is resumed. |
OnStop() | Called when the activity is no longer visible to the user. |
OnDestroy() | Called before the activity is destroyed by the system(either manually or by the system to conserve memory |
OnRestart() | Called when the activity has been stopped and is restarting again. |
在生命周期事件中,您可以声明用户离开并重新进入活动时活动的行为。
例子:
如果您正在观看Youtube视频,则当用户切换到另一个应用程序时,您可能会暂停视频并终止网络连接。当用户返回时,您可以重新连接到网络,并允许用户从同一位置恢复视频。
2.生命周期所有者
每个活动都有生命周期。该活动将是生命周期所有者(任何活动或片段都可以称为生命周期所有者)。初始化活动后,LifecycleOwner是最初将要构造的活动。任何实现LifeCycleOwner接口的类都表明它具有Android LifeCycle。例如,从支持库26.1.0开始,片段和活动实现LifeCycleOwner接口。人们可以通过实现界面和使用LifeCycleRegistry这里描述创建自定义LifeCycleOwner组件。
3.生命周期观察者
生命周期观察者,观察活动并跟踪生命周期,并执行操作。此生命周期观察者执行的操作取决于生命周期所有者的生命周期。每个生命周期所有者都有一个生命周期,生命周期观察者根据所有者的事件或生命周期状态来执行操作。
Java
import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.e("lifecycle", "onCreate invoked");
}
@Override protected void onStart()
{
super.onStart();
Log.e("lifecycle", "onStart invoked");
}
@Override protected void onResume()
{
super.onResume();
Log.e("lifecycle", "onResume invoked");
}
@Override protected void onPause()
{
super.onPause();
Log.e("lifecycle", "onPause invoked");
}
@Override protected void onStop()
{
super.onStop();
Log.e("lifecycle", "onStop invoked");
}
@Override protected void onRestart()
{
super.onRestart();
Log.e("lifecycle", "onRestart invoked");
}
@Override protected void onDestroy()
{
super.onDestroy();
Log.e("lifecycle", "onDestroy invoked");
}
}
输出:
您不会在仿真器或设备上看到任何输出。您需要打开logcat窗口。
现在在logcat上看到:调用了OnCreate,OnStart和OnResume方法。现在单击“ HOME”按钮。您将看到在Pause方法上被调用。一段时间后,您将看到onStop方法被调用。
现在在模拟器上查看。在家里。现在,单击中心按钮以再次启动该应用程序。现在单击应用程序图标。
现在在logcat上看到:调用了onRestart,onStart和onResume方法。如果您在模拟器上看到,该应用程序将再次启动。现在单击后退按钮。现在您将看到onPause方法被调用。一段时间后,您将看到onStop和Destroy方法被调用。