亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Android task和back stack詳解一:概述

系統 2095 0

  一個應用往往包含很多 activities .每個 activity 應圍繞著用戶可執行的特定動作來設計,并且可以啟動其它 activitie .例如,一個 email 應用可能可能有一個顯示新郵件列表的 activity .當用戶選擇一個郵件,一個新的 activity 被打開以顯示郵件內容.

  一個 activity 也可以打開同一設備上存在于其它應用的 activitie ,例如, 如果你的應用想要發送一個郵件,你可以定義一個 intent 來執行一個 "send" 動作并包含一些數據,比如一個地址和一條信息.另一個應用中的一個叫囂自己可以處理這種 intent activity 就被打開 ( 如果有多個 activitie 支持同樣的 intent ,那么系統會讓用戶選擇一個 ) .當 email 被發送后,你的 activity 被恢復并且看起來發送郵件的 activity 像是你的應用的一部分.即使那個 activitie 可能來自不同的應用, Android 靠著把兩個 activity 保存在同一個任務中來實現這種無縫的用戶體驗.

  一個任務是用戶在執行某種工作時所交互的 activitie 的集合. activitie 放置 在一個棧 (" 后退棧 ") 中,按照打開的順序排列.

  設備的 Home 屏是大多數任務的開始場所.當用戶觸摸在應用啟動臺中的圖標 ( 或一個 home 屏上的快捷方式 ) 時,應用的任務就來到了前臺.如果沒有這個應用的已存在的任務 ( 這個應用最近沒有被使用 ) ,那么一個新的任務被創建并且這個應用的 "main"activity 被作為棧的根 activity 打開.

  當當前的 activity 啟動了另一個 activity ,新的 activity 被放置在棧頂并擁有焦點.先前的 activity 依然保存在棧中,但是停止了.當一個 activity 停止時,系統保存了它的用戶界的當前狀態.當用戶后退按鈕時,當前的 activity 被從棧頂彈出 (activity 被銷毀了 ) 并且先前的 activity 被恢復了.棧中的 Activities 永不會被重新排列,只是入棧或出棧 當被當前 activity 啟動時就入棧,當用戶使用后退按鈕離開它時就出棧.如此,后退棧也是一個后進先出的棧.


下圖展示了工作棧的變化過程.

Android task和back stack詳解一:概述

  如果用戶繼續后退,那么棧中的各 activity 被彈出來展示上一個,直到用戶退到 Home ( 或到達任務開始時運行的那個 activity) .當所有的 activitie 都從棧種移除,任務就不再存在.

  一個任務是一個有聚合力的單元,它可以在用戶啟動一個新的任務或回到 home 屏時被整體地移到后臺.當位于后臺時,任務中的所有的 activitie 都處于停止,但是任務的后退棧卻保存完整—當任務被另一個任務取代時,僅僅是失去了焦點.見圖2:

Android task和back stack詳解一:概述

2. 兩個任務:任務 B 到了前臺,任務 A 于是被打入后臺,伺機恢復.


  一個任務可以再回到前臺,于是用戶可以獲得他離開時的模樣.舉個例子,當前的任務 ( 任務 A) 有三個 activitie 在其棧中—兩個在下面.用戶按下 Home 按鈕,然后又啟動一個新的應用.當 Home 屏出現時,任務 A 到了后臺.當新應用啟動時,系統為這個應用開始了一個任務 ( 任務 B) .當使用完新應用時,用戶再次回到了 Home 屏然后選擇了啟動任務A的那個應用.現在,任務 A 來到了前臺—其棧中所有的三個 activitie 都完整保留并且位于頂層的 activity 被恢復.此時,用戶也可以再回到 home 屏然后選擇任務B的應用于是回到任務B ( 或通過長按 Home 按鈕以顯示最近的任務然后選擇它 )

注: 多個任務可以同時存在于后臺.然而,如果用戶在同一時刻運行多個后臺任務,系統可能會銷毀后臺 activitie 來釋放內存,從而導致 activity 狀態的丟失.

  因為后退棧中的 activitie 從不會被重排,如果你的應用允許用戶從不只一個 activity 啟動一個特殊的 activity ,一個新的 activity 的實例會被創建并壓入棧中 ( 而不是把這個 activity 的當前實例弄到前臺來 ) .所以,你的應用中的一個 activity 可能被多次實例化 ( 甚至是從不同的任務 ) ,如圖 3 所示 . 同樣的,如果用戶使用后退按鈕向后導航, activity 的每個實例都會按照打開的順序重新顯現 ( 每個都保持它們自己的狀態 ) .然后,你如果不想某個 activity 被實例化多次,你可以改變這種行為.后面會講到如何做.


Android task和back stack詳解一:概述

3 .一個 activity 被實例化多次.


下面總結一下下 activity 和任務的默認行為:

  • ActivityA 啟動 ActivityB ActivityA 停止,但是系統保存它的狀態 ( 比如滾動條的位置和表單中輸入的文本 ) .如果用戶在 Activity B 中按下了后退按鈕, ActivityA 以保 存的狀態恢復.

  • 當用戶按下 Home 按鈕離開了一個任務,當前的 activity 停止同時它的任務進入后臺.系統保持任務中每個 activity 的狀態.如果用戶后來運行了這個任務的應用而恢復了這個任務,任務回到前臺并使棧頂端的 activity 恢復.

  • 如果用戶按下了后退按鈕,當前的 activity 從棧中彈出并被銷毀.前一個 activity 被恢復.當一個 activity 被銷毀時,系統不再保持 activity 的狀態.

  • Activitie 可以被多次實例化,即使是從另外的任務.







Android task和back stack詳解一:概述


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: ijzzijzz精的女人美女 | 国产乱人免费视频 | 欧美在线精品一区二区三区 | 国产91在线chines看 | 欧美 xx性 在线| 亚洲欧洲日韩国产aa色大片 | 国内精品伊人久久久久7777人 | 日本护士一级毛片在线播放 | 欧美中文在线 | 国产精品久久国产三级国电话系列 | 天天操夜夜| 成年人黄色在线观看 | 国产精品自在线天天看片 | 老子影院午夜伦不卡 | 成人深夜网站 | 老王午夜69精品影院 | 久久久久18| 天天插天天操天天干 | 性视频久久 | 日韩欧美福利 | 国产a毛片高清视 | 毛片在线免费视频 | 久久一色本道亚洲 | 欧美国产综合日韩一区二区 | 亚洲欧美久久精品 | 精品久久久久久久高清 | 欧美性色生活片天天看99 | 狠狠色噜噜狠狠狠狠2021天天 | 日日摸夜夜欧美一区二区 | 亚洲欧美在线观看一区二区 | 在线国产欧美 | 114毛片免费观看网站 | 国产亚洲欧美日韩在线看片 | 久久精品日日躁精品 | 国产一区二区三区高清视频 | 久久久久久午夜精品 | 久久午夜激情 | 日韩视频一 | 香蕉网在线播放 | 四虎成年永久免费网站 | 99高清免费国产自产拍 |