Android四大组件——Activity的启动模式
1、Standard(标准模式)
每次启动Activity的时候都会重新创建一个新的实例并加入到任务栈中,生命周期的调用与启动时一致。
2、SingleTop(栈顶复用模式)
每次启动Activity的时候都会判断任务栈的栈顶是否存在该Activity实例,如果存在则直接复用该Activity,否则创建新的Activity实例。
PS:当产生Activity复用时,onNewIntent()会被回调,通过此方法可以获取当前请求的信息;Activity复用时生命周期的oncreate和onStart不会被调用,因为没有被重新创建。
3、SingleTask(栈内复用模式)
每次启动Activity的时候都会该任务栈中是否存在该Activity实例,如果存在则把该Activity实例调到栈顶,且该实例上的其它Activity实例会依次出栈,否则重新创建。
PS:具体的创建过程:
首先系统会判断创建Activity的目标任务栈是否存在,如果不存在则创建新的任务栈,创建新的Activity实例并压入栈中;如果目标任务栈已经存在,则判断任务栈中是否存在该Activity的实例,如果存在则把该Activity实例调到栈顶并回调onNewIntent()方法,如果不存在则创建新的实例并压入栈中。
4、SingleInstance(单实例模式)
每次启动Activity时都会判断所有的任务栈中是否存在该Activity实例,如果存在则直接复用,否则创建新的实例。
PS:SingleInstance和SingleTask的区别:SingleTask允许存在多个实例,只要保证这些实例对象不在同一个任务栈中就行;而SingleInstance只允许系统存在一个实例对象。
补充:
Android中的任务栈:Android系统可以通过任务栈有序地管理每个Activity。退出应用程序时必须保证任务栈被清空,才能处于数据最安全的状态。任务栈不是唯一的。