Android Application Task Activities的關係

http://www.360doc.com/content/10/0507/15/155970_26498989.shtml

什麼是Android  Application?

簡單來說,一個apk文件就是一個Application。

任何一個Android Application基本上是由一些Activities組成,當用戶與應用程序交互時其所包含的部分Activities具有緊密的邏輯關係,或者各自獨立處理不同的響應。

這些Activities捆綁在一起成爲了一個處理特定需求的Application, 並且以“.apk”作爲後綴名存在於文件系統中。

Android平臺默認下的應用程序 例如:Email、Calendar、Browser、Maps、Text Message、Contacts、Camera和Dialer等都是一個個獨立的Apps。

 

安裝 Application的過程也可以簡單理解爲將其所包裹的Activities導入到當前的系統中,如果系統中已經存在了相同的Activities, 那麼將會自動將其關聯,而不會重複安裝相同的Activities,避免資源的浪費。

Application卸載的過程也會檢查當前所關聯的 Activities是否有被其它Application標籤所關聯,如果僅僅是提供當前的Application使用,那麼將會徹底被移除,相反則不做 任何操作。

 

就像我們已經知道的,Application基本上是由四個模塊組成:Activity、Service、Content Provider 和 Broadcast Receiver,其中Activity是實現應用的主體。

 

什麼是 Activity Stack?

操 作應用程序時,有時需要調用多個Activities來完成需求,例如:發送郵件程序,首先是進入郵件主界面,然後啓動一個新的Activity用於填寫 新郵件內容,同時可以調出聯繫人列表用於插入收件人信息等等。在這個操作過程中 Android平臺有一個專門用於管理Activities堆棧的機制,其可以方便的線性記錄Activities實例,當完成某個操作時,可以通過導航 功能返回之前的Activity(通過按操作檯的“Back”按鈕)。

每次啓動新的Activity都將被添加到Activity Stack。用戶可以方便的返回上一個Activity直到Home Screen,到達Home Screen後,將無法再繼續查看堆棧記錄(俗話說:到頭了)。如果當前Task被中止(Interrupting the task),返回到系統主界面後啓動了其它操作,當希望返回到前一個Task繼續執行時,只需要再次通過主界面的Application launcher或者快捷方式啓動這個Task的Root Activity便可返回其中止時的狀態繼續執行。

相對於Views、 Windows、Menus和Dialogs而言,Activity是唯一可被記錄在History stack中的數據,所以當你所設計的應用程序需要用戶由A界面進入到次一級界面B,當完成操作後需要再次返回A,那麼必須考慮將A看作爲 Activity,否則將無法從歷史堆棧中返回。

 

什麼是Task

當我們需要一個Activity可以啓動另一個Activity,可能另外一個Activity是定義在不同應用程序中的Activity。

例 如,假設你想在你的應用中讓用戶顯示一些地方的街景。而這裏已經有一個Activity可以做到這一點,因此,你的Activity所需要做的只是在 Intent對象中添加必要的信息,並傳遞給startActivity()。地圖瀏覽將會顯示你的地圖。當用戶按下BACK鍵,你的Activity會 再次出現在屏幕上。

對於用戶來說,看起來好像是地圖瀏覽與你的Activity一樣,屬於相同的應用程序,即便是它定義在其它的應用程序裏,並運行在那個應用程序的進程裏。

Android通過將這兩個Activity保存在同一個Task裏來體現這一用戶體驗。簡單來說,一個Task就是用戶體驗上的一個“應用”。 
它將相關的Activity組合在一起,以stack的方式管理(就是前面提到的Activity Stack),這就是Task。

 

在Android平臺上可以將task簡單的理解爲幽多個Activity共同協作完成某項應用,而不管Activity具體屬於哪個Application,

通過下圖可以更清晰的理解Application、task、Activity三者之間的關係:

image

 

Task 有啥用?

我們用過Android的手機就會知道有下面的場景:

假設我們首先在用IReader在看書,從選書到具體書的閱讀界面,這是有好幾個Activity。我們每一個點擊的Activity都被放在閱讀這個Task對應的Activity Stack中了,這可以放我們通過回退鍵返回每一個前面的Activity。

我們在閱讀到一半時,想看看Sina微博,按Home鍵離開了IReader。

在Sina微博界面也是有多個Activity,我們一步到閱讀界面。這時候我們每一個點擊的Activity都被放在Sina微博這個Task對應的Activity Stack中了,這可以放我們通過回退鍵返回每一個前面的Activity。

我們這時候再回到IReader讀書界面,原先的狀態還是保留的。

顯然每一個Task有自己的 Activity Stack。

Task就是這樣爲了方便人們使用手機而設置的,就像前面提到的場景Task可以跨Application。

 

下面這個圖從另外一個角度描述了Application Task Activities的關係

image

 

Task通過Application launcher、Home screen的快捷方式或者 由 “Recent Tasks”(長時間按住Home鍵)最近使用過的Task記錄中啓動。

當從一個Activity中啓動另外一個Activity時,Back鍵將作用於返回前一個Activity,與此同時 新開啓的Activity將被添加到Activity Stack中。

 

來自:http://www.cnblogs.com/ghj1976/archive/2011/04/29/2032412.html

 

有關更詳細的可以參看這篇文章:

[譯]關於Activity和Task的設計思路和方法 
http://blogold.chinaunix.net/u2/85193/showart_1966109.html

 

參考資料:

http://skyswim42.egloos.com/3127700

關於Activity和Task的設計思路和方法 
http://blogold.chinaunix.net/u2/85193/showart_1966109.html

Android Task 
http://www.apkbus.com/forum.php?mod=viewthread&tid=146

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章