首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当activity销毁时,关闭前台服务

当activity销毁时,关闭前台服务
EN

Stack Overflow用户
提问于 2019-12-05 00:32:07
回答 2查看 1.4K关注 0票数 0

我使用前台服务来播放音乐。我做了一些研究,发现即使我调用stopForeground(true)和stopSelf(),进程也会继续运行。如果我从我的活动的onDestroy调用它,它似乎不起作用。但如果我从另一个地方调用它们,例如当用户单击按钮时,它就会工作。

但如何做到这一点,我的服务被杀死时,应用程序被杀死。

代码语言:javascript
复制
private const val EMPTY_ROOT = "emptyRoot"
private val TAG = SoundsService::class.java.name

class SoundsService : MediaBrowserServiceCompat() {

@Inject
lateinit var mediaSession: MediaSessionCompat

@Inject
lateinit var callback: MediaSessionCallback

override fun onCreate() {
    inject()
    super.onCreate()

    mediaSession.apply {
        setCallback(callback)

        isActive = true
    }
    sessionToken = mediaSession.sessionToken
}

override fun onGetRoot(
    clientPackageName: String,
    clientUid: Int,
    rootHints: Bundle?
): BrowserRoot? {
    return BrowserRoot(EMPTY_ROOT, null)
}

override fun onLoadChildren(
    parentId: String,
    result: Result<MutableList<MediaBrowserCompat.MediaItem>>
) {}

override fun onDestroy() {
    mediaSession.run {
        isActive = false
        release()
    }
    stopForeground(false)
    stopSelf()
    super.onDestroy()
}
}
EN

回答 2

Stack Overflow用户

发布于 2019-12-05 00:42:56

它将在onDestroy中工作。在super调用之前,只需确保您正在调用它。也可以使用ApplicationContenxt实现这一点。

代码语言:javascript
复制
    applicationContext.startForegroundService(Intent(this, ServiceTest::class.java));
    applicationContext.stopService(Intent(this, ServiceTest::class.java))
票数 0
EN

Stack Overflow用户

发布于 2019-12-05 00:37:56

在调用stopForeground(true)或stopSelf()时,是否检查是否有任何崩溃

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59180631

复制
相关文章

相似问题

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