Activity的4种启动模式

Activity 的启动模式有4种,分别是 standard,singleTop.singleTask.singleInstance。可以在
AndroidMainifest.xml 文件中指定每一个 Activity 的启动模式。一个 Android 应用一般都会有多个 Activity,系统会通过任务栈管理这些 Activity,栈是一种后进先出的集合,当前的Activity 就在栈顶,按返回键,栈顶 Activity 就会退出。Activity 启动模式不同,系统通过任务栈管理 Activity 。

1. Standard 模式

来了就创建

Standard 模式是 Android 的默认启动模式,你不在配置文件中做任何设置,那么这个 Activity 就是 Standard 模式,这种模式下,Activity 可以有多个实例,每次启动 Activity,无论任务栈中是否已经有这个 Activity 的实例,系统都会创建一个新的 Activity 实例。

应用场景:默认模式,大部分情况下,都应该使用这种模式。

2. SingleTop 模式

栈顶单例

SingleTop 模式和 Standard 模式非常相似,主要区别就是当一个 SingleTop 模式的 Activity 已经位于任务栈栈顶,再去启动它时,不会再创建新的实例,如果不位于栈顶,就会创建新的实例。

启动相同 Activity,不会调用 onCreat(),但会调用 onNewIntent (可在此处处理相应逻辑),我们可以在这个函数做相应的处理。

应用场景:避免多次启动 Activity。

3. SingleTask 模式

任务栈单例

SingleTask 模式的 Activity 在同一个 Task 内只有一个实例,如果 Activity 已经位于栈顶,系统将不会创建新的实例,和 SingleTop 模式一样。但 Activity 已经存在但不位于与栈顶时,系统就会把该 Activity 移到栈顶,并把它上面的 Activity 出栈。并且会调用 onNewIntent(),方便业务逻辑处理。

应用场景:首页可以使用该模式。

4. SingleInstance 模式

独栈单例

SingleInstance 模式也是单例的,但和 SingleTask 不同,SingleTask 只是任务栈内单例,系统里是可以有多个 SingleTask Activity 实例的,而 SingleInstance Activity 在整个系统里只有一个实例,启动一 SingleInstance Activity时,系统会启动一个新的任务栈,而且这个任务栈只有他一个 Activity。

SingleInstance 模式并不常用,如果我们把一个 Activity 设置为 SingleInstance 模式,你会发现它启动时会慢一些,切换效果不好,影响用户体验。

应用场景:它往往用于多个应用之间,例如一个电视 launcher 里的 Activity,通过遥控器某个键在任何情况可以启动,这个 Activity 就可以设置为 SingleInstance 模式,当某应用中按键启动这个 Activity,处理完后按返回键,就会回到之前启动它的应用,不影响用户体验。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 今天想来说说Android的启动模式,一来自己做一个总结,二来如果能帮助到别人就更好了~ 首先来看一个实际的业务场...
    JxYoung阅读 12,458评论 27 62
  • 登录 小猪快跑22 关注 一个实例让你彻底明白Activity的4种启动模式 原创 2017年08月03日 14:...
    奔跑的虫子阅读 3,593评论 0 0
  • 关于Activity启动模式的文章已经很多,但有的文章写得过于简单,有的则过于注重细节,本文想取一个折中,只关注最...
    minhelloworld阅读 1,566评论 0 0
  • 林非池在入睡时分收到傅五年的请假简讯,没有多余说些其他,只要求批准一天假期。林非池不做多想,便答应了。午饭时分,林...
    回声深阅读 2,299评论 0 0
  • 循环队列 顺序存储 存储类型 初始化 判队空 入队 出队 链式存储 存储结构 初始化 判队空 入队 出队
    ccc1111阅读 1,768评论 0 0