一:Android Activity 生命周期
正常:
1. onCreate : 初始化工作(setContentView 加载资源,数据)(类似iOS的loadView)。
2. onStart : Activity 已经可见,但是不能交互(看不到),再后台(类似iOS的ViewDidLoad)。
3. onRestart : 重新启动(不可见 -> 可见) (用户行为导致的 (类似iOS的ViewWillAppear,但是第一次不会调用)。
4. onResume : Activity 已经可见,可以交互(看的见),显示前台(类似iOS的ViewDidAppear)。
5. onPause : Activity 正在停止,不能做耗时操作(影响新的Activity显示)(类似iOS的ViewWillDisAppear),
6. onStop : Activity 即将停止, 不能做耗时操作(ViewDidDisAppear)。
7. onDestroy: Activity 即将销毁(释放资源)(dealloc)。
注意
case1 :第一次启动: onCreate -》onStart -》onResume。
case2 :打开新的Activity或者切回桌面 onPause -》onStop。 (如果Activity 为透明 onStop 不会调用)。
case3 :回到原来的Activity onRestart -》onStart -》onResume。
case4 :点击back onPause -》onStop -》onDestroy
case5 :onStart ,onStop 从可见角度区分,
case6 :onResume, onPause 从是否前台角度区分,
case7 :A -》B ,A 的onPause 要比 B 的onResume 先执行。
Activity 启动
Instrumenttation + ActivityThread + ActivityMangerService(AWS)
启动请求 -》 Intrumenttation -》Binder -》AWS (维护着ActivityStack ,负责栈内的状态同步,ActivityThread 状态同步,完成生命周期方法)。
异常:
1. 系统配置发生改变导致Activity 被杀死。(横竖屏切换)
onPause -》onStop -》onDestroy -》 onSaveInstanceState(保存当前activity的Bundle对象) -》onRestoreInstanceState && onCreate (判断是否被重建,onRestoreInstanceState 在onCreate之后)
保存数据流程
onSaveInstanceState -》Window -》顶级容器保存数据 -》通知子元素保存数据。
2. 资源不足导致低优先级Activity 被杀死。
高: 前台Activity - 正在和用户交互的Activity 优先级最高。
中: 可见非前台Activity(弹出一个对话框)。
低: 已经被暂停的Activity(执行了onStop)。
3 不想被创建
android:configChanges = "orientation"
二 :Android Activity LauchMode 启动模式
1 启动模式
1。 standard 标准模式 FLAG _ACTIVITY_NEW_TASK ABCDD
2。 singleTop 位于栈顶 Activity 不会从新创建 并且调用(onNewIntent)ABCD
3。 singleTask 单例模式 调用(onNewIntent) ABCD ->ACDB
4。 singleInstance 单例模式 只能独立位于一个新的任务栈 不创建新的。除非任务栈被销毁
2 Activity Flag
singleTask -> FLAG_ACTIVITY_NEW_TASK
singleTop -> FLAG_ACTIVITY_SINGLE_TOP
FLAG_ACTIVITY_CLEAR_TOP 当前ACTIVITY 上面都弹出(standard) 拿出弹出(singleTask)
3 隐式启动 action category data 完全匹配
action 区分大小写