1. 程式人生 > >一個應用 可以有多個application

一個應用 可以有多個application

.com ask html 發出 原則 screen images data- 其它

韓夢飛沙 yue31313 韓亞飛 han_meng_fei_sha [email protected]

一個應用裏面怎樣才能有2個application

一個AndroidManifest.xml中可以定義多個application

一個應用裏面可不可以有2個application

===========

什麽是Activity Stack?

  如上所訴,Activity承擔了大量的顯示和交互工作,從某種角度上將,我們看見的應用程序就是許多個Activity的組合。為了讓這許多 Activity協同工作而不至於產生混亂,Android平臺設計了一種堆棧機制用於管理Activity,其遵循先進後出的原則,系統總是顯示位於棧 頂的Activity,從邏輯上將,位於棧頂的Activity也就是最後打開的Activity,這也是符合邏輯的。

  在操作應用程序時,每次啟動新的Activity,都會將此壓入Activity Stack,當用戶執行返回操作時,移除Activity Stack頂上的Activity,這樣就實現了返回上一個Activty的功能。直到用戶一直返回到Home Screen,這時候可以理解為移除了Activity Stack所有的Activity,這個Activity Stack不再存在,應用程序也結束了運行。

什麽是Task?

  Task是指將相關的Activity組合到一起,以Activity Stack的方式進行管理。從用戶體驗上講,一個“應用程序”就是一個Task,但是從根本上講,一個Task是可以有一個或多個Android Application組成的。例如:你想在發送短信時,拍一張照並作為彩信發出去,這時你首先停留在短信應用程序的的Acitivity上,然後跳轉到 Camera應用程序的Activity上,當完成拍照功能後,再返回到短信應用程序的Activity。這實際上是兩個Android Application協同合作後完成的工作,但為了更好的用戶體驗,Android平臺加入了Task這麽一種機制,讓用戶沒有感覺到應用的中斷,讓用 戶感覺在一“應用程序”裏就完成了想完成的工作。

======

什麽是 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,

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的關系

技術分享

Task通過Application launcher、Home screen的快捷方式或者 由 “Recent Tasks”(長時間按住Home鍵)最近使用過的Task記錄中啟動。
當從一個Activity中啟動另外一個Activity時,Back鍵將作用於返回前一個Activity,與此同時 新開啟的Activity將被添加到Activity Stack中。

=========

一個應用 可以有多個application