Activity启动模式详解

作者: ccccccal | 来源:发表于2017-09-15 16:51 被阅读33次

启动模式

Activity的管理是采用任务栈(类似于集合)的形式

  • Android任务栈又称为Task,它是一个栈结构,具有后进先出的特性,用于存放我们的Activity组件。
  • 每次打开个新的Activity或者退出当前Activity都会在任务栈的中添加或者减少一个Activity,因此一个任务栈包含了一个activity的集合, android系统可以通过Task有序地管理每个activity,并决定哪个Activity与用户进行交互:只有在任务栈栈顶的activity才可以跟用户进行交互。
  • 在退出应用程序时,必须把所有的任务栈中所有的activity清除出栈时,任务栈才会被销毁。
  • 一个App中可能不止一个任务栈,某些特殊情况下,单独一个Actvity可以独享一个任务栈。还有一点就是一个Task中的Actvity可以来自不同的App,同一个App的Activity也可能不在一个Task中。

Activity启动模式有如下几种

  • 标准模式(standard
  • 栈顶复用模式(singleTop
  • 栈内复用模式(singleTask
  • 单例模式(singleInstance
标准模式(standard)
  • 启动一次Activity就会创建一个新的Activity实例并且处于栈顶(启动该Activity的那个栈)
栈顶复用模式(singleTop)
  • 如果启动的Activity处于栈顶,就直接重用该实例(调用onNewIntent()、不调用onCreate()onStart()
  • 如果启动的Activity不在栈顶,就创建新的实例
栈内复用模式(singleTask)(在同一个栈内中的基础上)
  • 栈内已经存在该Activity的实例,就移除该实例上面所有Activity
  • 不存在,就创建新的实例
单利模式(singleInstance)
  • 启动Activity是就创建一个新的栈,再创建Activity实例放进去

用于多个app共享一个Activity实例

设置启动模式

  • 清单文件里面Activity添加属性,默认为标准模式

android:launchMode="启动模式"

  • 通过Intent设置
Intent inten = new Intent (context,ActivityB.class);
intent,addFlags(Intent,FLAG_ACTIVITY_NEW_TASK);//启动模式
startActivity(intent);
  • FLAG_ACTIVITY_SINGLE_TOP //singleTop
  • FLAG_ACTIVITY_NEW_TASK //standard

相关文章

网友评论

    本文标题:Activity启动模式详解

    本文链接:https://www.haomeiwen.com/subject/ojfesxtx.html