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
单实例模式