• Task


    Task:用户角度看到的一系列activities,默认每start一个activity产生一个instance,改变的方式有两种:两者冲突以intent中的flag为准
    1、设置<activity>中的launchMode属性:singleTop、singleTask、singleInstance的activity都需要重写onNewIntent()方法。
    singleTop:task的top的activity不能重复。
    singleTask:该activity在任意时刻都只有一个实例,并作为该task的root activity。eg:浏览器。
    singleInstance:除singleTask的特性外,该task中有且仅有该activity;被该activity启动的activity放到其他task中。
    singleTask和singleInstance的activity必须同时有<intent-filter ... >
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>,否则task没有入口恢复。
    2、设置Intent中的flag:FLAG_ACTIVITY_NEW_TASK==singleTask, FLAG_ACTIVITY_SINGLE_TOP==singleTop, FLAG_ACTIVITY_CLEAR_TOP清空back stack中该activity之上的activity。
    
    Back stack:Task中一系列activity构成的回退栈。没有到Home activity就可继续回退。
    
    Affinity亲和力:定义activity倾向于哪个task。默认在同一个app中的activity倾向于在一个task中。<activity>中的taskAffinity属性用一个唯一字符串标识亲和力(默认是app的包名),FLAG_ACTIVITY_NEW_TASK将新的activity放到有相同affinity的task中。
    每个task有一个唯一的affinity标识,默认是可launch得app包名。
    <activity>中的allowTaskReparenting="true"时,当有相同affinity的task移到前台时,activity可从启动的task移到该task。
    用途:apk中从用户角度看有多个app,可以用affinity区分不同app的activity。
    
    离开task再返回时发生的行为:默认task退到后台很长时间后,系统只保留root activity,清空其它activities。如果task中的root activity设置alwaysRetainTaskState="true"则保留所有activity;相反如果task中的root activity设置clearTaskOnLauch="true"则task返回时清空除root activity外所有其它activity;finishOnTaskLauch="true"作用于所有activity,task返回时清空该activity。
  • 相关阅读:
    JavaWeb 项目,更改本地文件需刷新才有效问题 (tomcat相关)
    java设置项目根目录 工作目录 working dictionary
    得到JavaWeb项目在Tomcat中的运行路径
    java连接mysql数据库中文乱码问题
    java读utf8 的txt文件,第一个字符为空或问号问题
    java项目连接access数据库
    AJAX POST&跨域 解决方案
    MySQL5.6新特性Index conditontion pushdow
    MathML转换成OfficeML
    .net大型分布式电子商务架构说明(转载来自<头条>)
  • 原文地址:https://www.cnblogs.com/toven/p/2641121.html
Copyright © 2020-2023  润新知