Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Application Fundamentals (2/n)

Application Fundamentals (2/n)

編輯:Android開發實例

1. Activities and Tasks



 

1.2 Affinities and new tasks
默認情況下,在一個程序中的所有activity都在一個affinity中,這個也使這些activity屬於同一個task。但是我們可以在<activity>標簽中設置taskAffinity屬性來為每一個activity指定一個單獨的affinity。不同的應用程序的activity可以被指定為相同的affinity,在同一個應用程序的多個activity也可以被指定為在不同的affinity中。在兩種情況下,affinity會起作用:
1) 啟動activity的Intent對象中包含FLAG_ACTIVITY_NEW_TASK標志。
2) 一個activity將allowTaskReparenting屬性 設置為true。

FLAG_ACTIVITY_NEW_TASK 標志:
默認情況下,通過startActivity()方法激活的activity會加入到和調用者相同的task中,也會放到和存放調用者相同的stack中。但如果傳遞給 startActivity()方法的的Intent對象包含了FLAG_ACTIVITY_NEW_TASK標志,系統就會把這個新激活的activity放到一個不同的task中去。正如這個標志的字面意義那樣,它是一個新的task。然而,這種情況不是絕對的。如果已經存在了一個和新激活的activity擁有相同的 affinitiy,那麼這個activity就會直接放入這個新的task中。

allowTaskReparenting 屬性:
若一個activity的allowTaskReparenting屬性被設置為true,那麼這個activity就可以從它啟動時初始的task移動到新的展示的task中(it can move from the task it starts in to the task it has an affinity for when that task comes to the fore)。比如,在一個關於旅游的應用程序中一個activity是報告選擇的城市的天氣情況的,它的affinity和這個應用程序中的其它activity都是相同的(默認情況),但是它的allowTaskReparenting屬性被設置為true。這時,此應用另外一個activity啟動了這個報告天氣情況的activity,那麼這個報告天氣情況的activity就被加入到那個調用activity相同的task中。然而,當這個關於旅游的應用程序離開前台,這個報告天氣情況的activity會被重新分配到新的當前顯示的task中。(However, when the travel application next comes forward, the weather reporter will be reassigned to and displayed with that task)

如果一個.apk文件包含了從用戶角度來說多個應用程序的話,你可能希望給acitvity分配不同的affinity。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved