iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 22
1

Service在APP關閉後仍然能獨立在背景運行,當任務完成後停止
Service的運作和使用者的操作無關,如等待網路通知、撥放音樂、下載資料等作業都能利用Service

新增Service

在file>service>service新增一個Service

class MyService : Service() {
    override fun onCreate() {
        super.onCreate()
        //在Service執行的任務
    }
    override fun onBind(intent: Intent): IBinder? {
        return null
    }
    //當Service被停止時啟動
    override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
        super.onStartCommand(intent, flags, startId)
        
    }
}

onStartCommand()回傳的值代表Service被停止後執行的動作

  • START_NOT_STICKY
    被停止後不再次啟動
  • START_STICKY
    被停止後再次啟動,但Intent會被清空
  • START_REDELIVER_INTENT
    被停止後再次啟動,Intent不會被清空

起動和終止

利用Intent和startService()啟動Service

startService(Intent(this,MyService::class.java))

利用stopService()強制停止Service

stopService(Intent(this,MyService::class.java))

上一篇
Day 21 FireBase資料庫-同步資料(Cloud Firestore)
下一篇
Day 23 推播
系列文
高中生Kotlin實作30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言