给定 ForegroundService 检查应用程序是否被用户滑动终止。
确实检查成功,但有时当应用程序进入后台时,应用程序会引发以下异常。
我在应用程序生命周期的 onStart 开始我的前台服务。我是否也应该停止 onStop 上的服务?
下面是我实现的一部分。
我的应用程序.kt:
private val lifecycleEventObserver = LifecycleEventObserver { source, event ->
when (event) {
Lifecycle.Event.ON_START -> {
startAppCloseService()
}
Lifecycle.Event.ON_STOP -> {
}
else -> {}
}
}
……
onCreate() {
...
ProcessLifecycleOwner.get().lifecycle.addObserver(lifecycleEventObserver)
}
fun startAppCloseService() {
val intent = Intent(this, AppCloseService::class.java)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(intent);
} else {
startService(intent);
}
}
AppCloseService.kt
class AppCloseService : Service() {
override fun onBind(intent: Intent?): IBinder? {
return null
}
override fun onTaskRemoved(rootIntent: Intent?) {
super.onTaskRemoved(rootIntent)
MyMixpanelManager.trackAppClose()
GlobalScope.launch {
delay(1000)
cancel()
}
this.stopSelf()
}
附言编译 SDK 版本 32,最低 SDK 24