美文网首页
Android启动模式

Android启动模式

作者: 三十五岁养老 | 来源:发表于2022-03-15 11:09 被阅读0次

    FLAG_ACTIVITY_NEW_TASK: 设置此状态,首先会查找是否存在和被启动的Activity具有相同的亲和性的任务栈(即taskAffinity,注意同一个应用程序中的activity的亲和性一样),如果有,刚直接把这个栈整体移动到前台,并保持栈中的状态不变,即栈中的activity顺序不变,如果没有,则新建一个栈来存放被启动的activity

    1. standard 标准的启动模式(默认)

    • 如果启动此Activity的Intent中没有设置FLAG_ACTIVITY_NEW_TASK标志, 则这个Activity与启动他的Activity在同一个Task中,

    • 如果设置了Activity请参考上面FLAG_ACTIVITY_NEW_TASK的詳細说明,"launchMode"设置为"standard"的

    • Activity可以被实例化多次, 可以在Task中的任何位置, 对于一个新的Intent请求就会实例化一次.

    2. singleTop 单一栈顶模式

    • 如果启动此Activity的Intent中没有设置FLAG_ACTIVITY_NEW_TASK标志, 则这个Activity与启动他的Activity在同一个Task中,
    • 如果设置了Activity请参考上面FLAG_ACTIVITY_NEW_TASK的詳細说明
    • "launchMode"设置为"singleTop"的Activity可以被实例化多次, 可以在Task中的任何位置, 对于一个新的Intent请求如果在Task栈顶, 则会用栈顶的Activity响应Intent请求,而不会重新实例化对象接收请求, 如果没有在栈顶, 则会实例化一个新的对象接收Intent请求.

    3. singleTask 单一任务栈模式

    "launchMode"设置为"singleTask"的Activity只能被实例化一次, 它允许其它Activity压入"singleTask"的Activity
    所在的Task栈,如果有新的Intent请求有此标志的Activity, 则系统会清除有此标志的Task栈中的全部Activity,并把此Activity显示出来.

    4. singleInstance 单一实例模式

    launchMode"设置为"singleInstance"的Activity总是在栈底, 只能被实例化一次, 不允许其它的Activity压入"singleInstance"的Activity所在Task栈, 即整个Task栈中只能有这么一个Activity.

    除了系统级别的一些应用程序会用,其他的应用程序很少用.

    如果某个activity 要显示的界面在整个手机中 只有一个 的话,那么 这个activity就会设置成singleInstance

    参考链接:https://www.cnblogs.com/xiaoQLu/archive/2012/07/17/2595294.html

    相关文章

      网友评论

          本文标题:Android启动模式

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