2022年3月10日 星期四

Android Studio - Service 生命週期(Service Lifecycle)介紹(六十一)

Android Studio - Service 生命週期(Service Lifecycle)介紹(六十一):

Service(服務)是一種可在後台執行長時間運行操作而不提供介面的應用元件。Service 可由其他應用元件啟動,而且即使使用者切換到其他應用,服務仍將在後台繼續運行。此外,元件可通過綁定到服務與之進行交互,甚至是執行進程間通信 (IPC)。例如,服務可在幕後處理網路事務、播放音樂,執行檔 I/O 或與內容提供程式進行交互。

Service 生命週期(Service Lifecycle)

Service 最基本的生命週期:
onCreate() - 創建 Service,只執行一次
onStart(Intent intent, int startId) - 啟動 Service(已廢棄,用 onStartCommand 來替代)
onStartCommand(Intent intent, int flags, int startId) - 啟動 Service,可以多次執行
onDestroy() - 銷毀 Service,只執行一次

Service 的啟動方式有兩種:
startService() 和 bindService()。
使用 startService() 方法啟動 Service,呼叫者與 Service 之間沒有關係,即使呼叫者退出了,Service 仍然執行。Service 不會自動銷燬,需要外部呼叫 stopService() 方法或在 Service 內部呼叫 stopSelf() 方法。 使用 bindService() 方法啟動 Service,呼叫者與 Service 繫結在了一起,呼叫者一旦銷燬,Service 也就終止了,呼叫者需要解綁時可呼叫 unBindService() 方法。

Service三種不同的服務類型
以下是三種不同的服務類型:
前台 Foreground - 前台服務執行一些使用者能注意到的操作。例如,音訊應用會使用前台服務來播放音訊曲目。前台服務必須顯示通知。即使使用者停止與應用的交互,前台服務仍會繼續運行。

後台 Background - 後台服務執行使用者不會直接注意到的操作。例如,如果應用使用某個服務來壓縮其存儲空間,則此服務通常是後台服務。

注意:如果您的應用面向 API 級別 26 或更高版本,當應用本身未在前台運行時,系統會對運行後台服務施加限制。在諸如此類的大多數情況下,您的應用應改為使用計畫作業。

綁定 Bound - 當應用元件通過調用 bindService() 綁定到服務時,服務即處於綁定狀態。綁定服務會提供用戶端-伺服器介面,以便元件與服務進行交互、發送請求、接收結果,甚至是利用進程間通信 (IPC) 跨進程執行這些操作。僅當與另一個應用元件綁定時,綁定服務才會運行。多個元件可同時綁定到該服務,但全部取消綁定後,該服務即會被銷毀。

2022年 3月 10日(Thu)天氣報告
氣溫:32.0°F / 0.0°C @ 07:00
風速:每小時 6公里
降雨機會:1%
相對濕度:百分之 74%
天氣:晴

沒有留言:

張貼留言