首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当停止绑定前台服务时,App进程不会停止。

当停止绑定前台服务时,App进程不会停止。
EN

Stack Overflow用户
提问于 2022-07-21 14:30:29
回答 1查看 141关注 0票数 1

我有一个绑定的前台服务,即使当应用程序从最近的时候被删除的时候,它也应该存活,但是当应用程序被删除时,也可以选择停止服务。那条可选的路就是我遇到麻烦的地方。

如果服务没有设置为前台,停止服务也会导致进程死亡。这是预期的效果:

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

我试过的是:

  1. 停止服务中的onTaskRemoved

代码语言:javascript
运行
复制
    override fun onTaskRemoved(rootIntent: Intent) {
        stopForeground(true)
        stopSelf()
    }

  1. 在清单中将stopAppWithTask设置为true:

代码语言:javascript
运行
复制
   <service
        android:name=".TestService" android:stopWithTask="true">
   </service>

  1. 通过活动停止:

代码语言:javascript
运行
复制
override fun onStop() {
    super.onStop()
    unbindService(connection)
  
    mBound = false
}

override fun onDestroy() {
    Intent(applicationContext, TestService::class.java).also { intent ->
        stopService(intent)
    }
    super.onDestroy()
}

  1. 和.3一样,但是我在onStop中停止使用前台服务。这是可行的,但并不理想,因为每次将应用程序放到新版本时,服务都将不再是前台。

代码语言:javascript
运行
复制
    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()
    }
代码语言:javascript
运行
复制
    // in the service
    fun stopForeground() {
        stopForeground(true)
    }

我有以下问题:

  1. 是应用程序进程没有停止所期望的效果吗?
  2. ,如果是,为什么进程永远不会停止?我认为操作系统最终会杀死该服务,但它从未发生(据我所注意到)
  3. 为什么onStop中的停止前台会导致进程正常死亡,但是在onTaskRemoved中停止它会使进程存活。
EN

回答 1

Stack Overflow用户

发布于 2022-07-25 10:40:28

  1. 如果服务是由绑定到它的客户端的字面操作启动的,则该服务将在所有客户端解除绑定后立即停止。请注意,只有在所有客户端解除绑定后,它才会停止。

因此,如果5个客户端绑定到该服务,那么5个客户端将从该服务中解除绑定,该服务将被销毁。

  1. 如果使用startService方法或startForegroundService方法启动服务,则客户端绑定到它,该服务将继续运行,直到调用stopSelf方法为止。解除绑定的行为对服务是否仍然有效没有影响,因为它是在任何客户端绑定之前启动的。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73068033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档