Activity生命週期
- onCreate: 第一次開啟時會進入的流程,只會執行一次
- onStart: 將Activity的頁面可視化,並將UI物件初始化使其可和使用者互動
- onResume:使用者進行互動時在這個階段,直到使用者切換頁面之後,切換成onPause。
- onPause : 有其他應用程式跑到前面時的狀況,可以特別設置用戶音樂暫停等等。
- onStop:目前APP已經看不到的狀態,若資源充足進到onRestart,若不足清除資源下次打開則到oncreate。
- onDestroy: 使用者終止APP或者系統資源極度缺乏情況下。
Service的生命週期
使用Service的幾種方法:
- startSercice() :啟動服務,單純使用startService的Service無法與其他組件通信。
- stopService():暫停服務
- bindService():綁定服務,經由bindService呼叫的service可進行通信。
- unbindService():解除綁定服務
生命週期:
- onCreate(): 首次創建服務時,調用此方法
- onStartCommand():另一個組件通過調用啟動此服務時,調用此方法
- onDestroy(): 當服務不在使用且要被銷毀時調用此方法
- onBind(): 當另一組件使用bindService與此服務綁定時,調用此方法
- onUnbind(): 當另一個組件調用unbindService()時調用此方法。
- onRebind(): 舊的組件解綁,且有新的組件綁定則調用此方法。
根據地點區分成本地服務(主線程)與遠程服務(獨立進程),也區分背景服務(時間運行、天氣更新)或是前景服務(音樂播放)。
遠程Service與其他組件進行通訊則需要IPC的機制,使用到AIDL的方式:
服務器端(Service)
步驟1 : 建立一個AIDL文件,並提供給Client接口
步驟2: 在Service子類中實現AIDL文件有說的接口
步驟3: 在AndroidMainfest.xml 中註冊服務與聲明服務
客戶端(Client)
- 複製AIDL文件到自己目錄下
- 使用Stub.asInterface街口獲取Service的Binder,調用Service提供的接口
- 通過intent指定Service的所在包,綁定遠程Service
參考資料AIDL文件: