Android Activity生命周期【图文】
1.整个周期的流程:
1. onCreate( ) :当你第一次创建该activity时调用。你可以在这里设置静态代码,创建View,
绑定数据到列表。
1.1 onRestart ( ): 在你的activity处于onStop状态后调用
1.2onStart ( ):在这个activity正在变成可视化时
1.2.1 onResume ( ):这个activity的界面与用户交流时(焦点位置)
1.2.2 onPause ( ):这个界面处于次级视角,不是焦点位置,仍然可见
1.3onStop( ):处于不可见状态。
2. onDestroy(): 你调用了finish()方法销毁了该activity,或者其他程序需要内存时,它被系统
自动销毁了,你可以用isFinishing( )方法区分这两种情况。
2.Actvity 堆栈
每个Actvity的状态由它所在Activity栈中的位置所决定,所有当前正在运行的Actvity将遵循照后进先出的原则。
3.Activity状态
随着Activity的创建和销毁,也就会进出栈如上图所示,其中可能会经历以下四种状态:
Active状态:在最当前的位置,有焦点,系统会牺牲所有的资源包括其他Activity(非active的)来保证它的运行。
Paused状态:并不是完全不见,只是一个小部分出现在前面上。
Stopped 状态:完全不可见,完全给遮蔽了当Activity处于Stopped状态时,一定要保存当前数据和当前的UI状态,
否则一 旦Activity退出或关闭时,当前的数据 和UI状态就丢失了。
Inactive状态:Activity被杀掉以后或者被启动以前,处于Inactive状态。这时Activity已被移除从Activity堆栈中,需要重新启动才可以显示和使用。
4.Task
它是一个存放多个的Activity的栈。
特点一:
它是以栈(stack)方式存放多个Activity。
特点二:
多任务功能(MultiTask ):
当用户按下Home按钮返回到最上面时,android可以将之前启动的多个Task
同时放在后台,所有的Activity保持stopped状态。除非内存不够用时,才会
销毁部分的Activity 。
特点三:
如何保护好你的Activity的状态(因为有可能,处于内存需要,系统将你的Activity销毁了)
以防这种情况,你应该在onSaveInstanceState() 里保存好该Activity的信息。
Activity被销毁后,系统还是会记住它曾经在这个Task里的位置。
更多的Managing Tasks,可以去看docs,例如:如何让Activity启动另一个Task,而不是取代原有的Task ;
如何让Activity重新打开一个存在Task底层下的某个Activity,而不是重新创建Activity;如何让Activity
销毁一个Task下的所有Activity,除了最底层的Activity。
这些操作都可以通过Activity的属性(attribute),和Intent的flag去实现。