安卓 生命周期
返回栈
安卓是用Task来管理活动的,一个任务就是一组存放在栈里的活动集合,这个栈也成为返回栈 (Back Stack) --后进先出的数据结构finish()或者back 可以销毁一个活动,处于栈顶的出栈。栈底为 启动活动的 activity活动状态: 1.运行状态 2.暂停状态 3.停止状态 4.销毁状态
运行(1) 活动 位于 栈顶暂停(2) 活动 不在 栈顶,但可见 占用屏幕的部分区域停止(3) 活动 不在 栈顶,不可见销毁(4) 活动 从返回栈中 移除活动的生存期: 1.onCreate() 2.onStart() 3.onResume() 4.onPause() 5.onStop() 6.onDestroy() 7.onRestart()
onCreate() (1)在此方法中完成初始化操作:如 加载布局 绑定事件 onStart() (2)活动由 不可见变为可见 的时候调用 onResume() (3)活动准备好 和用户进行交互 的时候调用 onPause() (4)系统准备去 启动或者恢复一个活动 的时候调用 onStop() (5)活动 完全不可见 的时候调用 onDestroy() (6)活动 销毁 的时候调用 onRestart() (7)活动 重新启动 的时候调用 完整生存期:1-6 在onCreate()中完成初始化操作, onDestroy()中完成释放内存操作 可见生存期:2-5 活动对用户是可见的,就算是 不能交互,onStart()中 资源加载 ,onStop()中 资源释放 --------可 保证停止的活动不会占用过多内存前台生存期:3-4 活动总是处于运行状态,可交互 onStop() 和 onPause() 的区别:若启动一个对话框,onPause()会执行,onStop()不会-----------------启动对话框时只被占用了一小部分屏幕的原因 问题::在 活动A 上又启动 活动B ,A会被停止 ,内存不足时A被回收,当B back 返回时 A是ReStart()吗?
答案:不是,A将重新调用 onCreate() 重新初始化资源 由于上面的原因,用户体验差,出现了saveInstanceState()方法来保存数据,在onCreate()中调用相应的取值方法就可取出数据