
Activity的生命周期
- onCreate():初始化Activity。Activity正在被创建,可以进行一些初始化工作,例如调用setContentView()加载界面布局资源,初始化Activity所需数据等。尽量少做一些不必要的操作,避免Activity启动太久
- onRestart():从不可见变为可见。Activity正在重新启动。一般是用户行为所导致。
- onStart():变为可见状态。Activity正在被启动,Activity已经可见,但没有出现在前台,无法与用户进行交互。
- onReasume():处于活动状态。Activity已经可见,并且出现在前台可以与用户进行交互。区别于onStart(),都表示已经可见,但onStart()处于后台,onReasume()处于前台。
- onPouse():处于暂停状态。Activity正在停止。可以进行一些存储数据,停止动画等工作,但不能太耗时,会影响新Activity的显示,onPouse()必须执行完,新Activity的onReasume()才会执行。
- onStop():处于不可见状态。Activity即将停止。可以做些轻量级的回收工作,同样不能太耗时。整个生命周期方法中,只有onResume,onPause,onStop方法是“静态”的,既可以存在较长的时间的
- onDestroy():销毁Activity。Activity即将被销毁,可以做一些回收工作和最终的资源释放。
Activity的四种启动模式
1. standard 标准启动模式
这种模式下启动的activity可以被多次实例化
2. singleTop 栈顶复用模式
这种模式下启动的activity的实例已经存在于任务桟的栈顶,那么再启动这个Activity时,不会创建新的实例,而是重用位于栈顶的那个实例,并且会调用该实例的onNewIntent()方法将Intent对象传递到这个实例中。如果这种模式启动的activity的一个实例已经存在与任务桟中,但是不在桟顶,那么它的行为和standard模式相同,也会创建多个实例。适合推送消息详情页,例如新闻推送详情Activity。
3. singleTask 栈内复用模式
在这个模式下,如果栈中存在这个Activity的实例就会复用这个Activity,不管它是否位于栈顶,复用时,会将它上面的Activity全部出栈,并且会回调该实例的onNewIntent方法。这个模式启动时,会在自己需要的任务栈中寻找实例,这个任务栈就是通过taskAffinity属性指定。如果这个任务栈不存在,则会创建这个任务栈。适合APP首页Activity。
4. singleInstance 全局唯一模式
该模式具备singleTask模式的所有特性外,与它的区别就是,这种模式下的Activity会单独占用一个Task栈,具有全局唯一性,即整个系统中就这么一个实例。
Activity的保存与恢复
onSaveInstanceState()
携带一个 Bundle类型的参数,用来在Activity被强制销毁之前保存数据
onRestoreInstanceState()
用来取得之前在onSaveInstanceState() 保存的值。另外onCreate()也可以取得保存的值
- 上一篇 Android 知识图谱
- 下一篇 Fragment
查看评论