Activity的启动模式小总结

作者: Troll4it | 来源:发表于2018-08-17 15:06 被阅读5次
    Fighting.jpg

    Activity的LauchMode

    standard:标准模式
    每次启动一个Activity都会重新创建一个新的实例,不管这个实例是否已经存在。
    不能用ApplicationContext去启动standard模式的Activity,因为standard模式下的Activity默认会进入启动它的Activity所属的任务栈,但是非Activity类型的Context并没有所谓的任务栈。
    singleTop:栈顶复用模式
    如果新的Activity已经位于任务栈的栈顶,此Activity不会被重建(此Activity的onCreat,onStart不会被系统调用);如果新的Activity的实例存在但是不位于栈顶,那么新的Activity仍然会被重建。
    singleTask:栈内复用模式。单实例模式
    只要Activity在一个栈中存在,多次启动此Acitivity都不会重新创建时。
    singleInstance:单实例模式(加强版的singleTask)
    具有singleTask的所有特性,同时具有singleInstance模式下的Activity只能单独地位于一个任务栈中。

    Activity的Flags

    FLAG_ACTIVITY_NEW_TASK 指定Activity为“singleTask”
    FLAG_ACTIVITY_SINGLE_TOP 指定Activity为“singleTop”
    FLAG_ACTIVITY_CLEAR_TOP 具有此标记的Activity,启动时,同一任务栈所有位于它上面的Activity都要出栈,一般和singleTask启动模式一起出现
    FLAG_ACTIVITY_EXCLUDE_FROM_RECENETS 具有此标记的Activity不会出现在历史Activity的列表中。XML属性:android:excludeFormRecents="true"

    后记

    参考《Android开发艺术探索》
    知识简单仅供复习,有关AMS相关的等研究后再补

    相关文章

      网友评论

      • 北边一小民:FLAG_ACTIVITY_NEW_TASK 指定Activity为“singleTask”,是这个吗?我记得应该是standard吧?

      本文标题:Activity的启动模式小总结

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