您的位置:首页 > 其它

Activity生命周期和启动模式

2016-05-03 21:07 246 查看
onRestart:一般Activity从不可见变回可见时被回调。比如,从另外一个Activity返回,生命周期是onRestart->onStart->onResume

onStart,onResume区别:

onStart:Activity已经显示,但是用户不可见,不能与用户交互,仍然在后台

onResume:Activity已显示到前台,用户可见

Activity第一次启动

onCreate->onStart->onResume

打开一个新的Activity或切换到桌面:

onPause->onStop

注:如果新Activity采用了透明主题,那么onStop不会被调用!

不能在onPause做重量级的操作,因为,新的Activity要等onPause完成后才能执行onResum

我们知道多次启动同一个Activity时,系统会创建多个实例并把它们放到任务栈中,任务栈是一种”后进先出“的栈结构。

Activity4种LaunchMode

- standard

系统默认模式,每次启动都会创建一个新实例

用ApplicationContext启动Activity时,会报错。因为非Activity类型的Context没有任务栈。解决这个问题的方法是为启动的Activty指定FLAG_ACTIVITY_NEW_TASK标记位,这样启动时,就会创建一个新的任务栈。

-  singleTop

如果新Activity已位于栈顶,不会重复创建。如果新的Activity已存在但不是位于栈顶,仍然会重复创建。

singleTask

栈内复用模式。当新的Activity已存在任务栈中,把此Activity上面的Activity全部出栈,将存在的作为栈顶。

比如任务栈有ADCB,D是signleTask模式,再启动D后,任务栈变成AD

signleInstance

单实例模式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: