4、 Activities and Tasks
一個Activity可以啟動另一個Activity,即使這個Activity是定義在另一個應用裡的,比如說,你想展示給用戶一條街的地圖,現在已經有一個Activity可以做這件事,那麼現在你需要做的就是將你請求的信息放進一個Intent對像裡,並且通過startActivity()傳遞給他,這個地圖就可以顯示出來了,但用戶按下BACK鍵時,你的Activity又重新出現在屏幕上。
5、 Affinities and new tasks
默認的,一個應用裡的所有Activity都有聯繫,所有都是屬於一個task的,然而,可以通過<activity>下的taskAffinity屬性來為每個Activity單獨的設置屬性關係,定義在不同應用中的Activity可以共享一種關係(affinity),或者定義在同一個應用中的Activity可以分配不同的關係(affinity)。這種關係在兩種情況下生效,當啟動Activity的 Intent對像包含有FLAG_ACTIVITY_NEW_TASK標誌,一個Activity的allowTaskReparenting屬性設置為true。
8、 進程和線程(Processes and Threads)
當一個應用的第一個組件需要運行時,android系統就為這個組件啟動一個只有一個線程的Linux進程,默認的,應用的所有組件都運行這個進程中的這個線程中。
但是,你可以安排組件運行在其他的進程中,並且為你的任意的進程增加若幹線程。
1、 進程
組件運行的進程是在manifest文件裡控制的,四大組件都一個process屬性可以指定進程來運行,這些屬性可以被設置為了每個組件都可以運行在他自己的進程中,或者幾個組件共享一個進程,或者不共享,如果兩個應用共享一個Linux user ID並且有相同的權限,那麼就可以使這兩個應用中的組件運行在相同的進程中,<application>也有process屬性,用來指定對所有組件的屬性。
9、 進程的生命週期(Processes and lifecycles)
Android系統總是盡最大的努力來維持一個應用的進程,但系統的內存不足時就可能需要關閉一些舊的進程了,但是決定關閉哪個進程呢,android系統把所以的進程放進一個重要性樹裡,最低重要性的進程將會被停止,系統有5種重要性等級,重要性從高到低如下:
(1)、前台進程。一個前台進程是當前執行用戶請求的進程,如果有如下的一種情形的那麼他就是前台進程:
a、這個進程裡運行著一個正在和用戶交互的Activity(這個Activity的onResume()方法被調用)。
b、這個進程裡有綁定到當前正在和用戶交互的Activity的一個service
c、這個進程裡有一個service對象,這個service對像執行了至少一個他生命週期的函數(onCreate(), onStart(), or onDestroy()).
d、這個進程裡有一個執行了onReceive()方法的broadcastreceiver對像
只有一定數量的前台進程在任何時間都存在,他們只有在最後的時刻被停止---系統的內存太少了而不能運行這些僅有的前台進程了),一般的,在那個時刻,手機會重新設置內存頁的狀態,所以停止一些前台的進程是為了保持對用戶操作的快速響應。