android 启动模式:

发布于 2020-01-11 22:52:40
关注者
0
被浏览
3126
1 个回答
  • 面试哥
    面试哥 2020-01-11
    为面试而生,有面试问题,就找面试哥。

    1、standard:标准化启动模式

    每启动一个Activity,都会重新创建Activity的新的实例,将其放在栈的顶部。不需要考虑这个实例是否已经存在。

    每一次启动,它的onCreate()、onStart()、onResume()方法都会被依次调用。

    2、singleTop:栈顶复用模式

    当前栈中已经有该Activity实例,并且该实例位于栈顶时,会去调用onNewIntent()方法。

    当前栈中已有该Activity的实例但是该实例不在栈顶时,依然会去创建Activity。

    当前栈中不存在该Activity实例时,会去新创建一个该Activity。

    应用场景:IM对话框、新闻客户端推送。

    3、singleTask:栈内复用模式

    它主要检测【寻找,通过taskAffinity】整个栈中是否已经存在当前想要启动的Activity,存在的话直接将该Activity置于栈顶,之前位于该Activity上面的Activity将被销毁,同时调用onNewIntent()方法,而不存在的话进行创建。

    应用场景:应用主界面。

    4、singleInstance:

    一个人独享一个任务栈。当该Activity启动时,系统会创建一个新的任务栈,同时将Activity放到这个新的任务栈当中,有别的应用来启动该Activity时,由于栈内复用的特性,不会再去创建相应Activity任务栈,而是这两个应用独享一个Activity实例。

    例如:应用A中现有两个Activity E、Activity F,为standard启动模式,应用B中有一个Activity G,但其启动模式是singleInstance。应用A想用应用B任务栈当中的Activity G,尽管在不同的应用下,但是应用A仍然会直接复用Activity G。

    特性:

    1、以SingleInstance模式启动的Activity具有全局唯一性【全局唯一性即指在整个系统当中只会存在一个这样的实例】;

    2、如果在启动这样一个Activity时,【整个系统都是单例的】,已经存在了一个实例;

    3、以SingleInstance模式启动的Activity具有独占性。

    应用场景:呼叫来电。

     

知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看