zoukankan      html  css  js  c++  java
  • Handling affinities

    密切关系表明了一个activity更愿意属于哪个task。默认的,同一个应用程序的所有的activity相互间有亲和力。因此,默认的,一个应用程序中的activity倾向于位于同一个task中。但是可以修改默认的activity的密切关系。不同的应用程序的activity可以有相同的密切关系,或者是同一应用的不同的activity可以指定不同的任务密切关系。

    通过修改 <activity> 元素的 taskAffinity 默认属性来修改任意给定的activity的密切关系。

     taskAffinity 属性的值为字符串型,必须在<manifest>元素默认包中唯一的名字,因为系统使用该名字来唯一标识默认的任务窃密关系。

    密切关系在俩种情况下生效:

    • 当包含FLAG_ACTIVITY_NEW_TASK 的intent登录activity时。
      在默认情况下,一个新activity被另外一个调用了startActivity()方法的activity载入了任务之中。并压入了调用者所在的堆栈。然而,如果传递给startActivity()Intent对象包含了FLAG_ACTIVITY_NEW_TASK标记,系统会为新activity安排另外一个任务。一般情况下,如同标记所暗示的那样,这会是一个新任务。然而,这并不是必然的。如果已经存在了一个与新activity有着同样affinity的任务,则activity会载入那个任务之中。如果没有,则启用新任务。
    • 当activity的 allowTaskReparenting 属性值为"true"时。
      它就可以从初始的任务中转移到与其拥有同一个affinity并转向前台的任务之中。比如说,一个旅行应用程序中包含的预报所选城市的天气情况的activity。它与这个应用程序中其它的activity拥有同样的affinity(默认的affinity)而且允许重定父级。你的另一个activity启动了天气预报,于是它就会与这个activity共处与同一任务之中。然而,当那个旅行应用程序再次回到前台的时候,这个天气 预报activity就会被再次安排到原先的任务之中并显示出来。

    注意:如果从用户的观点来看一个.apk文件包含多个应用程序,可能想要使用taskAffinity属性来指定activity与每个应用不同的密切关系。 

  • 相关阅读:
    第9天 图片整合
    第六天 元素类型
    第五天 文本溢出
    第四天 盒子模型
    第三天 css核心属性
    第二天 css基础 ,部分选择符
    第一天 HTML基础
    *Move Zeroes
    Word Pattern
    ReentrantLock
  • 原文地址:https://www.cnblogs.com/blueofsky/p/2295917.html
Copyright © 2011-2022 走看看