天天看點

Android學習筆記13——任務和回退棧(1)

        一個應用通常包含多個Activity。每一個Activity應該圍繞着所要表現的動作進行設計并且能夠啟動其他的Activity。例如,一個郵件的應用程式可能有一個Activity用來展示郵件清單,一個Activity用來展示每一個郵件的詳情。有時候一個Activity甚至可以啟動其他應用的Activity.例如,如果你想要發送一個郵件,你可以定義一個send動作的action并且攜帶一些資料(例如郵件位址和一條資訊),這樣,另一個定義了包含這種意圖的應用程式的Activity就會打開被打開來響應這個動作。在這個時候,這個intent就會發送一條郵件,一個email應用程式的activity啟動。當這個email被發送的時候回到你的Activity,看起來就像它是應用程式的一部分。即使這些Activity是屬于不同的應用程式,Android依靠把些Activity放到同一個任務(Task)中來實作使用者體驗的無縫結合。

      一個Task是為了表現特定工作的一系列用于使用者互動的Activity的組合。這些Activtiy以被打開的順序存儲在棧中。

     對于大多數Task來說,裝置主螢幕是開始的地方。當使用者觸摸一個應用程式的圖示時,這個應用程式的Task就會到前台。如果這個這個應用程式的任務,那麼就會創造一個新的的task,并且這個應用程式中被叫做‘main’的Activtiy會作為根Activtiy放入到Task中。而當目前的Activity啟動一個新的Activity時,這個新的Activity就會被壓入到棧頂并擷取到焦點。而前一個Activity仍然在棧中,隻是它停止了,并且系統會儲存使用者界面的目前的狀态。當使用者點選回退健時,目前的Activity從棧頂彈出(這個Activity被銷毀)而前一個Activity就會恢複焦點并且使用者界面的狀态也恢複過來。棧中的Activity從來不會準備,僅僅從棧中壓入和彈出。

Android學習筆記13——任務和回退棧(1)

這樣如果使用者繼續點選回退按鈕,那麼在棧中的每一個Activity都會被彈出而恢複到前一個直到回到主界面。當所有的Activity都從棧中移除的時候,這個Task也就不存在了。

一個Task是一個複合的,當使用者開啟一個新任務或者通過Home按鈕回到主界面時能夠運作在背景的單元。但是當運作在背景時這個Task中的全部的Activity都會停止。然而這個Task的回退棧仍然是有效的——這個Task隻是在其他Task發生的時候失去焦點而已。一個Task能傳回到前台是以能夠從這個Task離開的地方重制。

Android學習筆記13——任務和回退棧(1)