美文网首页
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