activity的启动模式4种:standard、singleTop、singleTask、singleInstance(其中前两个是一组、后两个是一组)。
1.standard:不管activity 栈中是否已经有该activity 的实例,都会创建新的实例,且置在栈顶,默认为standard。
2.singleTop:如果activity栈顶有该 activity实例,不会创建,并走onNewIntent方法,如没有该activity实例,就会创建新的。
3.singleTask:如果activity 栈中只要含有activity 的实例,不会创建新的,且将该实例置顶,并 activity 实例之上的其他activity 都会被移除掉。如不包含实例,则创建新的。
4.singleInstance:栈中只有一activity
activity 生命周期
在一个Activity正常启动过程中,这些方法调用的顺序是:新打开一个activity会走,onCreate -> onStart -> onResume;在Activity被kill掉的时或按返回键时会走,onPause -> onStop -> onDestroy,此为一个完整的Lifecycle。那么对于中断处理(比如电话来了或按Home 键时),则是onPause -> onStop,恢复时或再次启动时会走,onReStart -> onResume;如果当前应用程序的是一个Theme为Translucent(半透明) 或者Dialog 的Activity那么中断就是onPause ,恢复的时候onResume。
注:onStart,onStop方法是针对Activity 是否可见来调的,而onResume,onPause方法是针对Activity是否在前台我角度回调的。
通常在onPause方法中做一些处理:如停止动画,或其他正在运行的操作,释放资源: Broadcast,GPS,CAMERA等。
官方图: