一门技术的基础知识是掌握一门技术的起点和支撑。许多基础知识需要我们不断的回顾。
Activity是Android的四大组件之一,也是我们最长用到的组件。熟练的使用的Activity是我们Android的最基本功。使用Activity时最常涉及到的知识有
Activity生命周期 (7个状态方法、几种状态、数据缓存)
Activity启动模式
Activity使用技巧
(一)Activity的生命周期
1、一个完整的周期路线 : onCreate() -> onStart()-> onResume() -> onPause() -> onStop() -> onDestroy() ,这是一个完整无特殊情况的生命周期方法调用,没有涉及到onRestart()方法。
具体方法逻辑可以看下面的生命周期图(自己总结)
要理解这些方法的调用次序和影响就要理解Activity的几种状态:不可见、可见不可操作、可见可操作
当我们启动一个Activity,直到Activity显示出来,后台日志打印如下
当Activity跳转到另一个Activity时
可以看到当在一个Activity中启动另一个Activity时,先是执行A的onPause() 然后时B的onCreate() ->onStart() ->onResume 最后 执行A的onStop()。
这个次序非常清晰的对应到生命周期的状态和方法的对应关系。
现在看一下一个完整的两个Activity交互的方法调用流程A B(A启动B,B退回到A)
可以看到在A和B的交互中,A或者B的生命周期方法并不是连贯执行的,这个可以和Activity结合起来。
A启动B的一个完整流程:A onPause() (执行后A可见但不可操作)->B onCreate() ->B onStart() -> B onResume() (B可见可操作) ->A onStop(A不可见)
B退回到A的一个完整流程:B onPause() (执行后B可见但不可操作)->A onRestart() ->A onStart() -> A onResume() (A可见可操作) ->B onStop(B不可见) -> B onDestroy()
介绍:A 启动到B的时候,先是A失去焦点(可见不可操作)然后开始B的启动流程,当B达到可见可操作的时候再执行A的onStop将A变为不见也不可操作。但不会执行A的onDestroy
Activity的栈,Android专门有存放Activity的栈,目前我们看到的Activity在栈顶,当新启动一个Activity就会继续进入到栈顶,而回退,则是将栈顶的Activity退出,回到下一个Activity。
Activity依然在栈内时,不会执行onDestroy