📜  Android体系结构组件中的生命周期

📅  最后修改于: 2021-05-09 18:05:29             🧑  作者: Mango

生命周期是Google发行的Android体系结构组件之一,它使所有Android开发人员都可以更轻松地使用它。生命周期是一个类/接口,它保存有关活动/片段状态的信息,并且它还允许其他对象通过跟踪该状态来观察该状态。 LifeCycle组件与诸如Activity或Fragment之类的组件的Android LifeCycle事件有关,它具有三个主要的类,我们将处理这些类:

  1. 生命周期
  2. 生命周期所有者
  3. 生命周期观察者

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方法被调用。

想要一个节奏更快,更具竞争性的环境来学习Android的基础知识吗?
单击此处前往由我们的专家精心策划的指南,以使您立即做好行业准备!