一、Activity的四种启动模式
- standard(标准模式):系统默认的模式。每次启动一个Activity都会重新创建一个新的实例,不管这个实例是否已经存在。当我们用 Application Context去启动standard模式的Activity的时候会报错,是因为standard模式的Activity默认会进入启动它的Activity所属的任务栈中,但是由于非Activiy类型的Context(如Application Context)并没有所谓的任务栈,所以就会报错,解决这个问题的方法就是为待启动Activity指定FLAG_ACTIVITY_NEW_TASK标记位,这样启动的时候就会为他创建一个新的任务栈
- singleTop(栈顶复用模式):在这种模式下,如果新的Activity已经位于任务栈的栈顶,那么此Activity不会被重新创建,同时它的onNewIntent方法会被回调,通过这个方法的参数我们可以取出当前请求的信息
- singleTask(栈内复用模式):这是一种单实例模式,在这种模式下,只要Activity在一个栈中存在,那么多次启动该Activity都不会重新创建实例,和singleTop一样,系统会回调其onNewIntent。singleTask默认具有clearTop的效果
- singleInstance(单实例模式):具有此种模式的Activity只能单独地位于一个任务栈中
在上面说到Activity所需要的任务栈,那么什么是Activity所需要的任务栈呢?