zoukankan      html  css  js  c++  java
  • Android中与task相关的几个属性

    1、与任务相关的属性

    • taskAffinity :修改任何给定Activity的关联
      • 系统使用包名标识应用的默认任务关联;
      • taskAffinity属性取字符串值,必须不同于包名;
      • taskAffinify起作用的两种情况
        • 启动Activity的Intent包含FLAG_ACTIVITY_NEW_TASK;
        • Activity的allowTaskReparenting为true;
    • lauchMode
      • standard,默认模式 —— 系统在启动Activity的任务中创建Activity的新实例并向其传送Intent。Activity可以多次实例化,每个实例可以属于不同任务,一个任务可以拥有多个实例。
      • singleTop —— 若当前任务的顶部已经存在Activity的一个实例,则系统会通过onNewIntent()方法传送Intent。Activity可以多次实例化,每个实例均可属于不同的任务,一个任务可以拥有多个实例(前提是位于返回栈顶的Activity并不是Activity的现有实例)。
      • singleTask —— 系统创建新任务并实例化位于新任务底部的Activity。如果该Activity的一个实例已经存在一个单独任务中,系统会通过现有实例的onNewIntent()方法向其传送Intent。一次只能存在Activity的一个实例。
      • singleInstance —— 与singleTask相同,只是系统不会将任何其他Acitivty启动到包含实例的任务中。该Activity是其任务唯一仅有的成员;由此Activity启动的任何Activity均在单独任务打开。
      • 使用launchMode属性为Activity指定的行为可以由Intent附带的Activity启动标志替代。
    • allowTaskReparenting —— true/false,Activity是否可以从其启动的任务移动到与其具有关联的任务。
    • clearTaskOnLaunch —— true/false,若设置为true,每当用户离开任务后返回时,系统都会将堆栈清除到只剩下根Activity。与alwaysRetainTaskState刚好相反。
    • alwaysRetainTaskState —— true/false,用户长时间离开任务后,仍将所有Activity保留在其堆栈中(默认会清除根Activity外的其他Activity)。
    • finishOnTaskLaunch —— true/false,类似clearTaskOnLaunch,但只对单个Activity起作用。可能导致任何Activity停止,包括根Activity。用户离开后返回任务,任务将不复存在。

    2、与任务相关的Intent标志 (启动模式)

    • FLAG_ACTIVITY_NEW_TASK —— 在新任务中启动Activity。如果正在启动的Activity已经处于运行状态,则该任务会转到前台并恢复其最后状态,同时Activity会在onNewIntent()中收到新Intent。
      • 在Activity上下文之外启动Activity需要给Intent设置FLAG_ACTIVITY_NEW_TASK标志,否则会报异常。
      • 首先会查找是否存在和被启动Activity具有相同亲和性的任务栈,如果有,则直接把这个栈整体移动到前台,并保持栈中状态不变。
      • 默认情况下同一个应用中的所有Activity拥有相同的taskAffinity
    • FLAG_ACTIVITY_SINGLE_TOP—— 如果正在启动的Activity是当前Activity(位于返回战顶部),则现有实例会接收对onNewIntent()的调用,而不是创建新实例。产生与singleTop相同的行为。
    • FLAG_ACTIVITY_CLEAR_TOP —— 如果正在启动的Activity已在当前任务中运行,则会销毁当前任务顶部所有Activity,并通过onNewIntent()将此Intent传递给Activity已恢复的实例。
    • FLAG_ACTIVITY_CLEAR_TOP通常与FLAG_ACTIVITY_NEW_TASK结合使用。

    3、处理关联(即Activity优先属于哪个任务)

    (1)默认情况下,同一应用中的所有Activity彼此关联,优先位于相同任务中。
    (2)通过 taskAffinity属性设置关联

  • 相关阅读:
    Django----路由控制
    Django-ORM的使用
    Django-ORM框架
    Django对数据库表的操作
    Python操作mysql
    [mysql]linux mysql 基础命令操作
    [mysql]linux mysql 读写分离
    [mysql]linux mysql 主从复制
    [mysql 1]linux mysal 安装
    [mysql]linux mysal 安装
  • 原文地址:https://www.cnblogs.com/amyzhu/p/8338608.html
Copyright © 2011-2022 走看看