2014-04-12 58 views
14

我在StackOverflow上找不到任何回答我的問題的線程。我已經看到這個Android singletop singleinstance and singletask但這個問題與他的項目場景有關。singleTask和singleInstance之間的區別

singleTask和singleInstance之間有什麼區別?我已閱讀文檔,但無法理解..

我已閱讀此主題也Android singleTask or singleInstance launch mode?,但我無法理解。對不起

+0

你應該嘗試這個線程:http://stackoverflow.com/q/3219726/693752 – Snicolas

+0

是的,我也讀過,也是 – Mick

回答

24

什麼不清楚從docs

的「singleTask」和「singleInstance」模式也從每個 其他不同只在一個方面:一個「singleTask」活動允許其他 活動是其任務的一部分。它始終在其任務的根目錄 任務中,但其他活動(必須是「標準」和「單個頂級」活動)可以啓動到該任務中。另一方面,「單一實例」活動不允許其他活動成爲其任務的一部分 。這是該任務中唯一的活動。如果它開始另一個 活動,那麼該活動將被分配給不同的任務 - 就好像 FLAG_ACTIVITY_NEW_TASK的意圖。

+2

所以在'singleTask'的情況下,它允許其他活動在同一個堆棧和'singleInstance'它不允許在同一個堆棧中的其他活動? – Mick

+0

你是否知道我在問題中提出的問題的答案? – Mick

+0

是的,就是這樣。 – Snicolas

0

SingleInstance就像一個單身人士,而且它的堆棧就像final類不能被擴展。它始終單身在其堆疊中,並始終在那裏。

8

singleTask: - 總是會創建一個新任務,並將新實例作爲根壓入任務。但是,如果任何活動實例存在於任何任務中,則系統通過onNewIntent()方法調用將意圖路由到該活動實例。在這種模式下,活動實例可以推送到同一個任務。此模式對於充當入口點的活動很有用。

singleInstance: - 與singleTask相同,只是可以將no活動實例推送到singleInstance的同一個任務中。因此,使用啓動模式的活動始終在單個活動實例任務中。這是一種非常專業化的模式,只能在完全作爲一項活動實施的應用程序中使用。

+1

清晰,簡潔的解釋。謝謝! –