Android中的Activity启动模式

作者: 旅人星图 | 来源:发表于2018-09-11 22:07 被阅读18次

    Android中Activity是我们最常用的组件,我们需要深入的了解下activity的四种启动模式:

    1. standard
    2. singleTop
    3. singleTask
    4. singleInstance

    standard 标准启动模式

    顾名思义,这是Android的默认启动模式,当我们每次启动一个activity时,系统都会新创建一个实例,不管这个实例是否存在,他的生命周期函数会依次被调用。我们多次启动同一个activity系统会创建多个实例同时把他们一一放入任务栈中,我们点击back返回键时,会一一回退。

    singleTop 栈顶复用模式

    在该模式下,如果新的activity已经位于任务栈的栈顶,那么此activity不会被重新创建,同时他的onNewIntent会被回调,通过该方法我们可以取出当前请求的信息,这时候onCreate,onStart不会被调用。如果新的activity不是在栈顶,但是已存在,那么还是会重新创建实例

    singleTask 栈内复用模式

    在activity栈内,只要有一个实例存在,多次启动activity都不会重新创建实例,系统会回调onNewIntent函数,和singleTop效果一样。这里会分几种情况:

    1. 当前任务栈S1中情况为ABC,这时D以singleTask模式启动,要求任务栈为S2,由于S2和D都不存在,这时候系统会先创建任务栈S2,然后再创建D的实例并将其放入到S2中
    2. D的要求任务栈为S1,其他都和1相同,那么系统会直接创建D然后放入到S1中。
    3. 如果当前任务栈情况为ADBC,这时D以singleTask模式启动,要求任务栈为S1.这时系统会将D切换到栈顶,同时调用onNewIntent函数。由于singleTop具有clearTop的效果,会导致所有在D上面的Activity全部出栈,所以最终变成了AD。

    singleInstance 单实例模式

    这是一种加强型的singleTask模式,他除了具有所有singleTask的特性外,还只能单独处于一个单独的任务栈中。

    相关文章

      网友评论

        本文标题:Android中的Activity启动模式

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