Android:在应用程序被杀死后从小部件中查找服务是不是正在运行

Posted

技术标签:

【中文标题】Android:在应用程序被杀死后从小部件中查找服务是不是正在运行【英文标题】:Android: Finding if service is running or not from widget after app is killedAndroid:在应用程序被杀死后从小部件中查找服务是否正在运行 【发布时间】:2016-08-13 18:01:27 【问题描述】:

我的应用中有一项服务可以执行一些任务。我也有一个 WidgetProvider 类。当应用程序被杀死时,我通过 stopSelf() 停止服务。在此之后,如果用户与小部件交互,我需要知道服务是否正在运行。我该怎么做?

小部件类中的布尔变量不起作用,因为它只是一个广播接收器。由于我的应用程序被杀死,共享首选项也不起作用,所以我得到空指针异常。在这种情况下,我怎样才能知道服务是否正在运行?任何帮助将不胜感激,在此先感谢!

【问题讨论】:

【参考方案1】:

不确定为什么需要检查服务是否正在运行。您可以在 AppWidgetProvider 中只使用startService,如果该服务尚未启动,它将启动该服务。但是如果您仍然需要检查服务是否正在运行,那么您可以使用SharedPreferenceSharedPreference 对您的 Services、Activity 和 WidgetProvider 是通用的,因为它们都属于同一个应用程序。我不确定您为什么会收到nullpointerException

当您调用stopSelf() 或在服务的适当生命周期中(如onDestroy())时,您可以以布尔值形式向SharedPreferences 写信告知服务的状态。然后,您可以在onReceive()onUpdate() 中阅读此SharedPreferences

【讨论】:

以上是关于Android:在应用程序被杀死后从小部件中查找服务是不是正在运行的主要内容,如果未能解决你的问题,请参考以下文章

在应用程序被杀死并重新启动后,Android 应用程序黑暗主题消失了

Android应用程序及其服务在打开某些应用程序后被杀死

Android - 如何从小部件访问房间数据库

onActivityResult 从未从小部件启动的活动中调用

错误 Android 模拟器被杀死

一段时间后,前台服务被Android杀死