Activity

10人阅读 评论(0) 收藏 举报
分类:

Activity的生命周期

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()也可以取得保存的值

查看评论
    个人资料
    等级:
    访问量: 232
    积分: 250
    排名: 30万+
    文章分类
    文章存档