美文网首页
Activity 四种启动模式

Activity 四种启动模式

作者: jj_huang | 来源:发表于2019-01-09 14:48 被阅读0次

1.Standard

image.png
  • 1.在不指定Activity的启动模式时,系统默认使用该模式启动activity。
  • 2.每次启动activity,系统都会重新创建一个新的实例,放到activity栈的栈顶。非常消耗资源。
  • 3.Activity每次被创建 他的onCreate onStart onResume都会被依次调用。

2.SingleTop

image.png
image.png
  • 1.当前栈中已有该activity的实例并且该实例位于栈顶时,不再新建实例,并且会将intent对象传入回调onNewIntent方法;
  • 2.当前栈中已有该activity的实例但该实例不在栈顶时,它跟Standard的启动模式一样,还是会创建一个新的实例放到栈中;
  • 3.当前栈中不存在该activity的实例时,跟standard的启动模式一样。

在我的一些项目中 该启动模式主要用于防止重复点击,或一些不用重复点击的页面,如:IM聊天页,推送打开后的Activity等。

3.SingleTask

image.png
    1. 首先会根据taskAffinity去寻找当前是否存在一个对应名字的任务栈
  • 2.如果不存在,创建一个新的task任务栈,然后创建该activity实例加入任务栈中。
  • 3.如果存在,则找到该任务栈,查找该任务栈中是否存在该activity实例,如果存在,将其上方所有的activity出栈也就是销毁。在平时使用中,我们甚至可以将不同的app当中的activity设置成相同的taskAffinity,这样你虽然在两个不同的应用当中,但你两个应用的activity会被分配到同一个task任务栈中。

应用场景一般用在应用的主界面,

4.SingleInstance

image.png
image.png
  • 1.以SingleInstance模式启动的Activity具有全局唯一性。
  • 2.如果在启动这样的activity时,已经存在了一个实例,他会把该activity所在的任务调到前台,不断复用。
  • 3.以SingleInstance模式启动的Activity具有独占性。他会独自占有一个任务栈。这个任务栈中只有他一个实例。

应用场景 呼叫来电

相关文章

网友评论

      本文标题:Activity 四种启动模式

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