我有一个绑定的前台服务,即使当应用程序从最近的时候被删除的时候,它也应该存活,但是当应用程序被删除时,也可以选择停止服务。那条可选的路就是我遇到麻烦的地方。
如果服务没有设置为前台,停止服务也会导致进程死亡。这是预期的效果:
但是,如果将服务设置为前台,则应用程序进程不会终止:
我试过的是:
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
复制相似问题