Activity的生命周期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Activity的生命周期相关的知识,希望对你有一定的参考价值。

这是google android官方网站所给出的activity的生命周期图 技术分享 刚刚接触到android应用开发的我们看到这张图,我们肯定是懵了,我们用android程序实现以下 观察这些过程到底是什么时候被调用的

activity生命周期中方法的作用

  • oncreate:Activity对象创建完毕,但此时不可见
  • onstart:Activity在屏幕可见,但是此时没有焦点(即该该界面不能交互 不能点击)
  • onResume:Activity在屏幕可见,并且获得焦点
  • onPause:Activity此时在屏幕依然可见,但是已经没有焦点
  • onStop:Activity已经不可见了,但此时Activity的对象还在内存中
  • onDestroy:Activity对象被销毁

我们用logcat记录这些方法都什么时候被调用

创建一个新的android工程 在MainActivity类中覆盖父类的以上方法 如下代码

public class MainActivity extends Activity {
private String TAG = "MainActivty";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Log.e(TAG, "main:onCreate()");
}

@Override
protected void onStart() {
    super.onStart();
    Log.e(TAG, "main:onStart()");
}

@Override
protected void onResume() {
    super.onResume();
    Log.e(TAG, "main:onResume()");
}

@Override
protected void onRestart() {
    super.onRestart();
    Log.e(TAG, "main:onRestart()");
}

@Override
protected void onPause() {
    super.onPause();
    Log.e(TAG, "main:onPause()");
}

@Override
protected void onStop() {
    super.onStop();
    Log.e(TAG, "main:onStop()");
}

@Override
protected void onDestroy() {
    super.onDestroy();
    Log.e(TAG, "main:onDestroy()");
}

}
  • 当我们打开应用的时候logcat输出 如图

  • 技术分享

  • 当我们点击home键到主界面时 logcat输出如图 可以看出activity并没有被销毁

  • 技术分享

  • 我们再次点击应用的时候 logcat输出如图
  • 技术分享
  • 我们点击返回应用退出的时候 logcat输出如图
  • 技术分享
  • 当你自己做完这些事情的时候 相比你已经对activity的google官网给的生命周期有了进一步的认识了

</html

以上是关于Activity的生命周期的主要内容,如果未能解决你的问题,请参考以下文章

导航上的片段生命周期重叠

使用 Fragment 和 Activity 执行生命周期流程的问题

自动挂钩到 Activity 生命周期方法的异步任务库

React Native 中的 Android Activity 生命周期 - ViewPager

我可以管理生命周期所有者,用 Koin 注入 viewModel 吗?

Activity的生命周期