强制停止会使应用程序的接收器不被调用?
Posted
技术标签:
【中文标题】强制停止会使应用程序的接收器不被调用?【英文标题】:Force stop will make app's receiver not being called? 【发布时间】:2013-06-19 11:56:48 【问题描述】:我有一个用 XML 声明的服务,它响应 PACKAGE_ADDED
广播意图。
它工作正常,但我刚刚发现如果我强制停止应用程序,接收器将不再收到任何东西。它没有被调用。
这正常吗?我能做些什么?
我需要确保它始终响应。
【问题讨论】:
嗯,我也面临同样的问题。经过多次调试,我终于意识到如果我使用 CleanMaster 杀死应用程序,我的 WifiEnabledReceiver(用于跟踪 Wifi 状态)将永远不会收到任何东西。 如果活动不在前台,请尝试使用服务并安排警报再次运行服务,这将读取接收器。 【参考方案1】:自 android 3.1 版以来,应用程序在手动凝视一次之前无法接收广播意图。 在第一次启动之前,应用程序被启动器视为“已停止”。 (http://developer.android.com/about/versions/android-3.1.html 在“停止的应用程序上启动控件”下)。
如果您手动强制停止应用程序,此标志将再次设置,您需要手动重新启动它以使其再次接收事件。
【讨论】:
【参考方案2】:尝试添加FLAG_INCLUDE_STOPPED_PACKAGES
this FLAG 在你的意图中。
【讨论】:
请提供答案。【参考方案3】:如果您的接收器是由您的服务动态注册的,那么当他被杀死时,接收器也是。 但是,如果您在 XML 中声明您的接收器,这应该可以工作。 (像往常一样启动接收器)
【讨论】:
在 android 3.1+ 中不再可用。现在在 android 3.1+ 中,当应用程序被强制停止时,应用程序将不会接收广播接收器,即使它们已在清单文件中注册。以上是关于强制停止会使应用程序的接收器不被调用?的主要内容,如果未能解决你的问题,请参考以下文章