国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Activity、Task、Back Stack的概念----Activity的管理

2019-11-06 09:58:33
字體:
來源:轉載
供稿:網友

Stack(棧):后進先出(LIFO),常用操作入棧(push),出棧(pop),處于最頂部的叫棧頂,最底部叫棧底

Activity、Task、Back Stack: Task是Activity的集合,是一個概念,實際使用的Back Stack來存儲Activity,可以有多個Task,但是 同一時刻只有一個棧在最前面,其他的都在后臺!那棧是如何產生的呢? 答:當我們通過主屏幕,點擊圖標打開一個新的App,此時會創建一個新的Task!舉個例子: 我們通過點擊通信錄APP的圖標打開APP,這個時候會新建一個棧1,然后開始把新產生的Activity添加進來,可能我們在通訊錄的APP中打開了短信APP的頁面,但是此時不會新建一個棧,而是繼續添加到棧1中,這是 Android推崇一種用戶體驗方式,即不同應用程序之間的切換能使用戶感覺就像是同一個應用程序, 很連貫的用戶體驗,官方稱其為seamless (無縫銜接)! ——————這個時候假如我們點擊Home鍵,回到主屏幕,此時棧1進入后臺,我們可能有下述兩種操作: 1)點擊菜單鍵(正方形那個按鈕),點擊打開剛剛的程序,然后棧1又回到前臺了! 又或者我們點擊主屏幕上通信錄的圖標,打開APP,此時也不會創建新的棧,棧1回到前臺! 2)如果此時我們點擊另一個圖標打開一個新的APP,那么此時則會創建一個新的棧2,棧2就會到前臺, 而棧1繼續呆在后臺; 3) 后面也是這樣…以此類推!

< activity >中我們可以使用的屬性如下: - taskAffinity - launchMode - allowTaskReparenting - clearTaskOnLaunch - alwaysRetainTaskState - finishOnTaskLaunch taskAffinity:默認情況下,一個應用程序中的所有activity都有一個Affinity,這讓它們屬于同一個Task。 你可以理解為是否處于同一個Task的標志,然而,每個Activity可以通過 < activity>中的taskAffinity屬性設置單獨的Affinity。 不同應用程序中的Activity可以共享同一個Affinity,同一個應用程序中的不同Activity 也可以設置成不同的Affinity。 launchMode:standard,singleTop,singleTask,singleInstance (當用戶長時間離開Task(當前task被轉移到后臺)時,系統會清除task中棧底Activity外的所有Activity 。這樣,當用戶返回到Task時,只留下那個task最初始的Activity了。我們可以通過修改下面這些屬性來 改變這種行為!) alwaysRetainTaskState: 如果棧底Activity的這個屬性被設置為true,上述的情況就不會發生。 Task中的所有activity將被長時間保存。 clearTaskOnLaunch: 如果棧底activity的這個屬性被設置為true,一旦用戶離開Task, 則 Task棧中的Activity將被清空到只剩下棧底activity。這種情況剛好與 alwaysRetainTaskState相反。即使用戶只是短暫地離開,task也會返回到初始狀態 (只剩下棧底acitivty)。 finishOnTaskLaunch: 與clearTaskOnLaunch相似,但它只對單獨的activity操 作,而不是整個Task。它可以結束任何Activity,包括棧底的Activity。 當它設置為true時,當前的Activity只在當前會話期間作為Task的一部分存在, 當用戶退出Activity再返回時,它將不存在。

這里寫圖片描述


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南和县| 江阴市| 溆浦县| 松阳县| 新疆| 壤塘县| 裕民县| 阆中市| 平遥县| 思南县| 潼关县| 界首市| 淄博市| 青田县| 黄大仙区| 湖州市| 裕民县| 老河口市| 密云县| 长沙市| 东方市| 江孜县| 闻喜县| 襄垣县| 乌拉特后旗| 荔浦县| 朝阳县| 逊克县| 淮滨县| 古交市| 武胜县| 江津市| 五河县| 横峰县| 墨竹工卡县| 苗栗市| 磐安县| 周宁县| 磐安县| 抚宁县| 洛浦县|