您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Android中Activity有哪些常用的屬性,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
個人理解
1>Activity launchMode設置不為standard,在跳轉Activity時,如果新的Activity不再創建新的實例(不執行onCreate) 會調用onNewIntent方法。 (正常生命周期情況不會調用onNewIntent())
2>Activity launchMode singleInstance實用場景—>關于瀏覽器的LaunchMode為singleTask,所以如果當你點擊一個連接下載文件時(由一個activity來處理下載,launchmode為standard),如果再次進入瀏覽器,那么下載頁面就被Destory了,那么這里我們可以把下載頁面LaunchMode設置為singleInstance可以解決這個問題.(即:在使用singleTask的情況下 不想關閉的界面可單獨新起一個task)
3>taskAffinty對lanuchMode的影響 :
當LanuchMode設置為 standard 和singTop,即使 taskAffinty不同,也不會新起Task.
當LanuchMode設置為 singleTask ,以A啟動B來說
1、當A和B的taskAffinity相同時:第一次創建B的實例時,并不會啟動新的task,而是直接將B添加到A所在的task;當B的實例已經存在時,將B所在task中位于B之上的全部Activity都刪除,B就成為棧頂元素,實現跳轉到B的功能。 2、當A和B的taskAffinity不同時:第一次創建B的實例時,會啟動新的task,然后將B添加到新建的task中;當B的實例引進存在,將B所在task中位于B之上的全部Activity都刪除,B就成為棧頂元素(也是root Activity),實現跳轉到B的功能。
當LanuchMode設置為singleInstance
當第一次創建該Activity實例時,會新建一個task,并將該Activity添加到該task中。注意:該task只能容納該Activity實例,不會再添加其他的Activity實例!如果該Activity實例已經存在于某個task,則直接跳轉到該task。
4>allowTaskReparenting 這個屬性用來標記一個Activity實例在當前應用退居后臺后,是否能從啟動它的那個task移動到有共同affinity的task,“true”表示可以移動,“false”表示它必須呆在當前應用的task中,默認值為false。
5>clearTaskOnLaunch
程序回到home界面后,再次點擊程序圖標的效果。影響的是activity的生命周期。
簡單的:
activity A(clearTaskOnLaunch設置為true)(為主界面)
activity B
程序啟動A,在啟動B。再點擊HOME鍵回到桌面,再點擊程序圖標,效果是B執行onrestart,B執行ondestory。A界面顯示。(如果clearTaskOnLaunch沒設置,則是顯示B界面)
稍微復雜點的:
activity A(clearTaskOnLaunch設置為true),B(clearTaskOnLaunch設置為true),C
依次啟動A,B,C,點擊HOME,再在桌面點擊圖標。啟動的是A(執行onrestart),B、C執行(ondestory)。
也就是說,優先啟動第一個(A)已注冊clearTaskOnLaunch為true的Activity,其余的后啟動的activity(B、C)都銷毀,除非前面A已經finish銷毀,后面的已注冊clearTaskOnLaunch為true的activity才會生效。
關于Android中Activity有哪些常用的屬性就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。