1. 程式人生 > >按home鍵,再次點選頁面按鈕,回到退出頁面

按home鍵,再次點選頁面按鈕,回到退出頁面

第一步:去除application中的 android:launchMode=“singleTask”

第二步:然後新增:android:alwaysRetainTaskState=“true”

在這裡插入圖片描述

(作用:是否保持原來的狀態。當我們按HOME鍵返回桌面,"true"表示任務棧的狀態被保留著。

1.android:allowTaskReparenting 這個屬性用來標記一個Activity例項在當前應用退居後臺後,是否能從啟動它的那個task移動到有共同affinity的task,“true”表示可以移動,“false”表示它必須呆在當前應用的task中,預設值為false。如果一個這個Activity的元素沒有設定此屬性,設定在上的此屬性會對此Activity起作用。例如在一個應用中要檢視一個web頁面,在啟動系統瀏覽器Activity後,這個Activity例項和當前應用處於同一個task,當我們的應用退居後臺之後使用者再次從主選單中啟動應用,此時這個Activity例項將會重新宿主到Browser應用的task內,在我們的應用中將不會再看到這個Activity例項,而如果此時啟動Browser應用,就會發現,第一個介面就是我們剛才開啟的web頁面,證明了這個Activity例項確實是宿主到了Browser應用的task內。

2.android:alwaysRetainTaskState 這個屬性用來標記應用的task是否保持原來的狀態,“true”表示總是保持,“false”表示不能夠保證,預設為“false”。此屬性只對task的根Activity起作用,其他的Activity都會被忽略。 預設情況下,如果一個應用在後臺呆的太久例如30分鐘,使用者從主選單再次選擇該應用時,系統就會對該應用的task進行清理,除了根Activity,其他Activity都會被清除出棧,但是如果在根Activity中設定了此屬性之後,使用者再次啟動應用時,仍然可以看到上一次操作的介面。
這個屬性對於一些應用非常有用,例如Browser應用程式,有很多狀態,比如開啟很多的tab,使用者不想丟失這些狀態,使用這個屬性就極為恰當。
3.android:clearTaskOnLaunch 這個屬性用來標記是否從task清除除根Activity之外的所有的Activity,“true”表示清除,“false”表示不清除,預設為“false”。同樣,這個屬性也只對根Activity起作用,其他的Activity都會被忽略。 如果設定了這個屬性為“true”,每次使用者重新啟動這個應用時,都只會看到根Activity,task中的其他Activity都會被清除出棧。如果我們的應用中引用到了其他應用的Activity,這些Activity設定了allowTaskReparenting屬性為“true”,則它們會被重新宿主到有共同affinity的task中。

4.android:finishOnTaskLaunch 這個屬性和android:allowReparenting屬性相似,不同之處在於allowReparenting屬性是重新宿主到有共同affinity的task中,而finishOnTaskLaunch屬性是銷燬例項。如果這個屬性和android:allowReparenting都設定為“true”,則這個屬性好些。)