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