Service是應用程式元件之一,它用於背景處理與使用者介面無關的長時間任務,即便切換到其他應用程式也會繼續執行,例如:訊息通知、資料下載或音樂播放等。
File→New→Service→Service
輸入Service名稱後點選Finish
AS會自動產生Service需要的檔案,AndroidManifest.xml也會自動增加Service的資訊
在Activity中啟動Service,可用intent傳入startService()方法,參數為當前Activity與Service
startService(Intent(this, MyService::class.java))
在Activity中關閉Service,可用intent傳入stopService()方法。
stopService(Intent(this, MyService::class.java))
Service被啟動後執行onCreate(),並呼叫onStartCommand(),當Service需要結束時使用stopSelf(),此時會進入onDestroy()
class MyService : Service() {
//僅在執行時啟動
override fun onCreate() {
super.onCreate()
}
//每次啟動都呼叫
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
super.onStartCommand(intent, flags, startId)
//終止Service,進入Service類別的onDestroy()
stopSelf()
return super.onStartCommand(intent, flags, startId)
}
override fun onBind(intent: Intent): IBinder?= null
}
onStartCommand()告訴系統如何重啟Service,若執行中的Service收到Activity發出startService()請求,會直接執行onStartCommand(),而不會再次執行onCreate()
onStartCommand()第一個參數intent可接收由Activity啟動時夾帶的資訊,第二個參數flags表示啟動服務的方式,第三個參數為啟動的識別標籤,return須回傳整數,且必須是下列三種之一: