Activity生命周期和启动模式

来源:互联网 发布:深思考人工智能怎么样 编辑:程序博客网 时间:2024/05/18 01:16

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

单实例模式


0 0