gpt4 book ai didi

java - 如何让服务知道何时杀死应用程序以清除通知?

转载 作者:行者123 更新时间:2023-11-30 10:01:18 25 4
gpt4 key购买 nike

我正在开发一个使用BLE服务的应用程序,该服务在用户希望连接到设备时启动,并在没有更多连接时停止。在BLE服务的生命周期内,我希望有一个持续的通知来提醒用户该应用程序正在运行并正在使用BLE。当应用程序仍在运行时停止服务时,此方法可以正常工作。但是问题出在轻扫应用程序时,我似乎找不到可以清除通知的地方。

我尝试过的事情:


清除onUnbind()的通知


override fun onUnbind(intent: Intent?): Boolean {
mNM = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
mNM!!.cancelAll()
return super.onUnbind(intent)
}



清除onDestroy()上的通知


override fun onDestroy() {
mNM = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
mNM!!.cancelAll()
super.onDestroy()
}



将stopWithTask设置为false并清除中的通知


<service
android:name=".location.LocationService"
android:enabled="true"
android:stopWithTask="false"/>


override fun onTaskRemoved(rootIntent: Intent?) {
mNM = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
mNM!!.cancelAll()
stopSelf()
super.onTaskRemoved(rootIntent)
}


但是这些都不起作用

我通过绑定服务来启动它:

bindService(intent, mConnectionLocation, Context.BIND_AUTO_CREATE)


另外,我允许屏幕旋转,因此MainActivity onDestroy不能用于解除绑定。

为了清除持久性通知,我还能如何检测被刷掉的应用程序?

最佳答案

不要将其作为绝对答案,但我没有足够的声誉来发表评论。

我怀疑您正在使用前台服务。如果是这种情况,请使用变体3,并先调用stopForeground(true),然后再调用stopSelf(),并且应该取消该通知。

如果您不使用前台服务,则如何创建通知?

关于java - 如何让服务知道何时杀死应用程序以清除通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57500659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com