1.standard:标准模式、默认的情况下
每次启动一个Activity都会重新创建一个新的实例,在这种模式下,谁启动了这个Activity,那么这个Activity就运行在启动它的那个Activity所在的栈中。
用ApplicationContext去启动standard模式的Activity会报错,这是因为standard模式的Activity默认会进入启动它的Activity所属的栈中,但是非Activity的context并没有所谓的任务栈。
解决这个问题的方法是:
设置FLAG_ACTIVITY_NEW_TASK标记位,这样启动的时候就会为它创建一个新的任务栈,待启动的Activity实际上是以singTask模式启动的。
2.singleTop:栈顶复用模式:
如果新Activity已经位于任务栈的栈顶,那么此Activity不会被创建。同时它的onNewIntent方法会被回调,通过此方法的参数我们可以取出当前请求的信息。(不会调用onCreate,onStart)
如果新Activity的实例已存在不是位于栈顶,那么新Activity仍然会重新创建。
3.singleTask:栈内复用模式:
一个singleTask模式的Activity请求启动的时候,系统首先判断该Activity所需的栈A是否存在,如果不存在,首先创建所需的栈A,然后创建Activity,将Activity的实例放进这个栈中
如果这个栈A存在,然后判断栈内是否有Activity的实例,如果没有就创建Activity,然后将Activity的实例放进这个栈中
如果这个栈A存在,且栈内存在这个activity的实例,那么就会把Activity调到栈顶,并调用它的onNewIntent方法。
4.singleInstance:单实例模式:
这是一种加强的singleTask,它除了singleTask的特性外,还加强了一点,具有此种模式的Activity,只能单独地位于一个栈中
Activity的启动模式
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- Activity的启动模式 1. Activity的LaunchMode 我们知道,在默认情况下,当我们多次启动同...
- 2. Activity的启动模式 2.0 前言 本文总结自任玉刚老师的《Android开发艺术探索》,文章中的【示...
- 转载请注明出处:http://www.jianshu.com/p/c4cba9c94fa8本文出自Shawpoo的...