更新於 2024/11/02閱讀時間約 2 分鐘

Activity 與 Service 生命週期及AIDL

    Activity生命週期

    1. onCreate: 第一次開啟時會進入的流程,只會執行一次
    2. onStart: 將Activity的頁面可視化,並將UI物件初始化使其可和使用者互動
    3. onResume:使用者進行互動時在這個階段,直到使用者切換頁面之後,切換成onPause。
    4. onPause : 有其他應用程式跑到前面時的狀況,可以特別設置用戶音樂暫停等等。
    5. onStop:目前APP已經看不到的狀態,若資源充足進到onRestart,若不足清除資源下次打開則到oncreate。
    6. onDestroy: 使用者終止APP或者系統資源極度缺乏情況下。
    amp-img-attr

    Service的生命週期

    使用Service的幾種方法:

    1. startSercice() :啟動服務,單純使用startService的Service無法與其他組件通信。
    2. stopService():暫停服務
    3. bindService():綁定服務,經由bindService呼叫的service可進行通信。
    4. unbindService():解除綁定服務

    生命週期:

    1. onCreate(): 首次創建服務時,調用此方法
    2. onStartCommand():另一個組件通過調用啟動此服務時,調用此方法
    3. onDestroy(): 當服務不在使用且要被銷毀時調用此方法
    4. onBind(): 當另一組件使用bindService與此服務綁定時,調用此方法
    5. onUnbind(): 當另一個組件調用unbindService()時調用此方法。
    6. onRebind(): 舊的組件解綁,且有新的組件綁定則調用此方法。

    根據地點區分成本地服務(主線程)與遠程服務(獨立進程),也區分背景服務(時間運行、天氣更新)或是前景服務(音樂播放)。

    遠程Service與其他組件進行通訊則需要IPC的機制,使用到AIDL的方式:

    服務器端(Service)

    步驟1 : 建立一個AIDL文件,並提供給Client接口

    步驟2: 在Service子類中實現AIDL文件有說的接口

    步驟3: 在AndroidMainfest.xml 中註冊服務與聲明服務

    客戶端(Client)

    1. 複製AIDL文件到自己目錄下
    2. 使用Stub.asInterface街口獲取Service的Binder,調用Service提供的接口
    3. 通過intent指定Service的所在包,綁定遠程Service

    參考資料AIDL文件:

    分享至
    成為作者繼續創作的動力吧!
    © 2024 vocus All rights reserved.