活动生命周期
活动生命周期要复杂得多。如你所知,Activity 是 Android 应用中的单页,用户可以在其中执行交互。
在下图中,你可以看到 Android Activity 生命周期的样子:
如你所见,Activity 生命周期有特定的流程。在移动应用程序中,你当然有每个 Activity 类中处理特定生命周期片段的方法:
[Activity(Label = "LifecycleApp", MainLauncher = true, Icon = "@mipmap/icon")]
public class MainActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Log.Debug("OnCreate", "OnCreate called, Activity components are being created");
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.MainActivity);
}
protected override void OnStart()
{
Log.Debug("OnStart", "OnStart called, App is Active");
base.OnStart();
}
protected override void OnResume()
{
Log.Debug("OnResume", "OnResume called, app is ready to interact with the user");
base.OnResume();
}
protected override void OnPause()
{
Log.Debug("OnPause", "OnPause called, App is moving to background");
base.OnPause();
}
protected override void OnStop()
{
Log.Debug("OnStop", "OnStop called, App is in the background");
base.OnStop();
}
protected override void OnDestroy()
{
base.OnDestroy();
Log.Debug("OnDestroy", "OnDestroy called, App is Terminating");
}
}
官方 Android 文档中有很好的描述:
-
活动的整个生命周期发生在第一次调用
onCreate(Bundle)
到最后一次调用onDestroy()
之间。活动将在onCreate()
中完成所有全局状态设置,并释放onDestroy()
中的所有剩余资源。例如,如果它有一个在后台运行的线程从网络下载数据,它可以在onCreate()
中创建该线程,然后在onDestroy()
中停止该线程。 -
活动的可见生命周期发生在对
onStart()
的调用之间,直到对onStop()
的相应调用。在此期间,用户可以在屏幕上看到活动,尽管它可能不在前台并与用户交互。在这两种方法之间,你可以维护向用户显示活动所需的资源。例如,你可以在onStart()
中注册 BroadcastReceiver 以监视影响 UI 的更改,并在用户不再看到你正在显示的内容时在onStop()
中取消注册。onStart()
和 onStop()方法可以多次调用,因为活动对用户可见并隐藏。 -
活动的前景生命周期发生在对
onResume()
的调用之间,直到对onPause()
的相应调用。在此期间,活动位于所有其他活动之前并与用户交互。活动可以经常在恢复和暂停状态之间进行 - 例如,当设备进入休眠状态,传递活动结果时,何时传递新意图 - 因此这些方法中的代码应该相当轻量级。