Activity的生命周期:
onStart、onStop 从是否可见角度来回调;onResume、onPause 从是否位于前台角度来回调。
Activity A -> Activity B :A onPause -> B onResume。
系统资源配置发生变化导致Activity被销毁并重新创建。Activity异常销毁,系统回调onSaveInstanceState来保存Activity当前状态。
onSaveInstanceState -> onStop -> onStart -> onRestoreInstanceState,onSaveInstanceState和onPause没有既定时序关系。
Activity的启动模式:
- standard: 标准模式。每次启动一个Activity都会重新创建一个实例。被启动的Activity运行在启动它的那个Activity所在的栈中。
- singleTop:栈顶复用模式。如果新的Activity已经位于栈顶,它不会被重新创建,系统回调onNewIntent。
- singleTask:栈内复用,单例模式。Activity在一个栈中只有一个实例。如果Activity想要的栈不存在,则先创建栈,然后创建Activity的实例并入栈。如果栈内存在Activity的实例,则把Activity上面的其他Activity全部出栈,使它位于栈顶。TaskAffinity标识Activity所需要的任务栈的名字,默认情况下,所有Activity所需的任务栈的名字都是应用包名。
- singleInstance:独立栈内单例模式。系统为Activity单独创建一个任务栈,栈内只有它的实例。