我有一个绑定的前台服务,即使当应用程序从最近的时候被删除的时候,它也应该存活,但是当应用程序被删除时,也可以选择停止服务。那条可选的路就是我遇到麻烦的地方。
如果服务没有设置为前台,停止服务也会导致进程死亡。这是预期的效果:

但是,如果将服务设置为前台,则应用程序进程不会终止:

我试过的是:
onTaskRemoved: override fun onTaskRemoved(rootIntent: Intent) {
stopForeground(true)
stopSelf()
}stopAppWithTask设置为true: <service
android:name=".TestService" android:stopWithTask="true">
</service>override fun onStop() {
super.onStop()
unbindService(connection)
mBound = false
}
override fun onDestroy() {
Intent(applicationContext, TestService::class.java).also { intent ->
stopService(intent)
}
super.onDestroy()
}onStop中停止使用前台服务。这是可行的,但并不理想,因为每次将应用程序放到新版本时,服务都将不再是前台。 override fun onStop() {
super.onStop()
mService.stopForeground()
unbindService(connection)
mBound = false
}
override fun onDestroy() {
Intent(applicationContext, TestService::class.java).also { intent ->
stopService(intent)
}
super.onDestroy()
} // in the service
fun stopForeground() {
stopForeground(true)
}我有以下问题:
onStop中的停止前台会导致进程正常死亡,但是在onTaskRemoved中停止它会使进程存活。发布于 2022-07-25 10:40:28
因此,如果5个客户端绑定到该服务,那么5个客户端将从该服务中解除绑定,该服务将被销毁。
https://stackoverflow.com/questions/73068033
复制相似问题