Activity生命周期的理解

(备注:网上找到过很多关于activity生命周期的文章,但是大部分都是作为一个初学者不能理解,下面收集的是找到的比较好理解的一个实例;随着学习,后期有更深的理解会持续更新该文章)


一、生命周期按照顺序依次往下:

onCreate()            --创建
onStart()              --启动
onResume()         --继续

onPause()           --暂停
onStop()            --关闭
onDestroy()       --消灭


二、注解

onCreate()

当Acitivity第一次被创建时触发,一般在这里要做的事情包括创建视图(setContentView())、向视图填充必要的数据等等。

onRestart()

这个我比较少用到,按文档上的介绍,如果Activity之前被stop过,那么下一次onStart()方法之前会先触发这个方法。

onStart()

只要Activity从不可见变成可见,就会触发到这个方法,但被AlertDialog遮挡/显示的情况不算在内。

onResume()

当Activity来到最上层的时候,也就是开始与用户直接交互时,触发这个方法。例如本来Activity被一个AlertDialog遮挡,当这个AlertDialog消失时,onResume()方法就被触发。

onPause()

和onResume()的触发条件刚好相反,如果Activity本来在最上层,当它要让出最上层的位置时会触发这个方法。onPause()和onResume()是被触发最频繁的两个方法,所以在这里不应该执行过于消耗资源的方法。

onStop()

当有其他Activity覆盖了当前Activity时,不论另一个Activity是新开始的还是从下层移至最上层的,当前Activity的onStop()方法都会被触发。

onDestroy()

Activity生命周期的终点。有两种情况会导致它被触发:1)执行了Activity#finish()方法;2)Android系统由于资源不足等原因决定杀掉Activity所在进程。通过isFinishing()方法可以判断出是哪种情况。在这个方法里,我们一般要做的事情是释放Activity占有的资源,例如后台正在进行的下载线程等等。



三、实例:

假设你有一个“首页Activity”和一个“编辑页Activity”;

  • 当用户点击首页里的“开始编辑”按钮时,首页的onPause()->onStop()依次触发,编辑页的onCreate()->onStart()->onResume()依次触发;
  • 当用户在编辑页按下“返回”按钮时,编辑页的onPause()->onStop()依次触发,之后首页的onStart() -> onResume()依次触发;
  • 这时用户在首页按下“返回”按钮,首页的onPause()->onStop()->onDestroy()依次触发。



猜你喜欢

转载自blog.csdn.net/qq_30805957/article/details/80509383