Android – Activity / Service 的生命狀態
之前在學習 android app 開發所做的筆記,在此記錄一下. 每個Activity有四個生命狀態: Active/Running:當一個Activity在螢幕的最上層時(堆疊的最頂端),它就是屬於Active或Running的狀態 Paused:如果一個Activity失去焦點(focus)但還看得到它的畫面,那失去焦點的這個Activity則處在Paused的狀態。失去焦點的Activity它還是完全活著的,並沒有消失。(活著的意思是指Activity自已本身所有的狀態及資料都還是存在的也跟視窗管理程式window manager保持連繫著)像這種Paused的Activity,可能在系統的記憶體不足的時後,被系統自動移除掉 Stopped:如果一個Activity被其它的Activity完全的遮住時,這個被遮的Activity處於stop的狀態,它仍然保有全部的狀態及資料,但因為它已不再被使用者看見,所以它的畫面是被隱藏起來的(畫面不需要更新)。當系統記憶體不足時,這種Stop狀態的Activity是最先被系統考慮拿來釋放記憶體的 Finished: 當一個Activity處於Pause或Stop的狀態時,系統可以要求Activity結束(Finish)或直接移除(Kill)它。當它需要再度呈現在使用者面前時,它必需要能完整的重新啟動及回復先前的狀態 每個Service有兩種生命狀態: Started:當一個組件(例如:一個Activity)呼叫startService()的時候,Service就進入Started狀態。一個Service一旦被啟動,就會一直在背景運行,就算啟動的組件被關閉還是繼續運行。 一般而言,一個被啟動的Service只會執行一個功能,執行完畢後並不會回傳結果給啟動的組件。例如:某個Service會透過網路下載或上傳一個檔案。當傳輸工作結束,該Service應該自動關閉。 Bound:當一個組件(例如:一個Activity)呼叫bindService()的時候,Service就進入Bound狀態。 處於Bound狀態的Service,和呼叫的組件的關係類似client-server介面,讓組件和Service互相溝通、傳送與接收信息,甚至可以透過IPC跨process交換信息。 一個處於Bound狀態的Service,只要有一個對應的