Android活动生命周期方法
一、掌握活动的生命周期对任何Android开发者来说都非常重要,Android中的活动是可以层叠的,我们每启动一个洗的活动,就会覆盖在原活动之上,然后点击Back键会销毁最上面的活动,下面的一个活动就会重新显示出来。
其实Android是使用任务(Task)来管理活动的,一个任务就是一组存在栈里的活动的集合,这个栈就是返回栈(Back Task),启动一个活动,它便会入栈,销毁一个活动,处于栈顶的活动出栈,如下图:
二、活动共有4中状态
1、运行状态
活动位于栈顶,处于屏幕最前面,系统也不会回收。
2、暂停状态
活动不再处于栈顶,但依然可见(如栈顶的活动是透明的或者栈顶的活动并不是铺满整个手机屏幕),此时活动处于暂停状态,一般系统不会回收。
3、停止状态
活动不位于栈顶,被其他活动完全遮挡,而且完全不可见,此时活动处于停止状态,其他地方需要内存时系统可能会回收。
4、销毁状态
活动从返回栈中移除后就变成了销毁状态,系统会回收。
三、活动的生存期
七个回调方法:
1、OnCreate()
在活动第一次被创建的时候调用,每个活动中都重写这个方法。你应该在这个方法中完成活动的初始化操作,比如加载布局、绑定事件。
2、OnStart()
这个方法在活动由不可见变为可见的时候调用。
3、OnResume()
活动准备好和用户进行交互时调用,此时的活动一定位于返回栈的栈顶,并且处于运行状态。
4、OnPause()
这个方法是系统准备去启动或者恢复另一个活动的时候调用。如果活动需要,则应重写此方法,比如:保存一些关键数据,执行速度一定要快,不然影响到新的栈顶活动的使用。
5、OnStop()
这个方法在活动完全不可见的时候调用,它和OnPause()方法的主要区别在于:如果启动的新活动是一个对话框式的活动,那么OnPause()方法会得到执行,而OnStop()方法并不会执行。
6、OnDestroy()
这个方法在活动被销毁之前调用,之后活动的状态将变为销毁状态
7、OnReStart()
这个方法是活动由停止状态变为运行状态之前调用,也就是活动被重新启动了。
四、以上七个方法除了onRestart()方法,其他都是两两相对的,从而又可以将活动分为三种生存期。
1、完整生存期
活动在onCreate()方法和onDestroy()方法之间所经历的,就是完整生存期
2、可见生存期
活动在onStart()方法和onStop()之间所经历的,在可见生命期内,活动对于用户总是可见的,即便有可能无法和用户进行交互。
3、前台生存期
活动在onResume()方法和onPause()方法之间所经历的,这个生存期内,活动总是处于运行状态,此时的活动是可以和用户进行相互的,我们平时看到和接触最多的也是这个状态下的活动。
活动生命周期示意图:
从以上的Activity的生命周期不难看出,该图包含了两层循环,
第一层循环是:onPause->onResume->onPause
第二层循环是:onStart->onRestart->onResume->onPause->onStop
第一层循环称为是 焦点生命周期,第二层循环可以视为生命周期。
也就是说,第一层循环是在Activity焦点获得与失去的过程中循环,在这个过程中,Activity始终是可见的
第二层循环是Activity可见和不可见的过程中循环。
一个最简单的完整的Activity生命周期会按照如下顺序回调:onCreate -> onStart -> onResume -> onPause -> onStop -> onDestroy。
五、在实际应用场景中,假设A Activity位于栈顶,此时用户操作,从A Activity跳转到B Activity
开始时,A被实例化,执行的回调有A:onCreate -> A:onStart -> A:onResume。
当用户点击A中按钮来到B时,假设B全部遮挡住了A,将依次执行A:onPause -> B:onCreate -> B:onStart -> B:onResume -> A:onStop。
此时如果点击Back键,将依次执行B:onPause -> A:onRestart -> A:onStart -> A:onResume -> B:onStop -> B:onDestroy。
感谢你看完这篇文章。仅对学习Android知识加深理解。
参考文章链接:https://blog.****.net/ImEzreal/article/details/80725762