Android 应用程序在后台时的广播接收器

3
我在处理Android广播接收器时遇到了问题。我有一个登录页面,成功登录后应用程序会转到另一个活动,并包含广播接收器。一旦一个单独的服务完成其操作,我就发送广播。在正常情况下,应用程序可以正常工作。
我的问题是:当我输入用户名/密码并点击登录按钮后,我将应用程序发送到后台。但是,当应用程序在后台时,广播接收器无法接收我发送的广播。
有人知道这个问题吗?
非常感谢任何帮助。提前致谢。

你在哪个活动中注册了广播? - Sam
我已经在第二个活动的onCreate方法中注册了广播接收器。第二个活动指的是登录页面之后的活动。(当应用程序在后台运行时,将进行此活动更改) - nala4ever
将您的广播注册到清单中。 - Pankaj Kumar
谢谢大家,将广播注册在清单中起作用了。 - nala4ever
3个回答

5

你是否在任何一个onPause/OnStop/OnDestroy方法中注销了广播接收器?如果是,则将无法接收广播。请确保您已在AndroidManifest中注册广播接收器,且没有注销。如果您希望在后台接收意图,则不应该注销它。


1
在清单中注册广播成功了 :) 谢谢 Drax - nala4ever
该解决方案同样适用于LocalBroadcastManager,并且也是在片段中使用广播接收器时的一种解决方案,因为当片段不在视图中时,onPause/onDestroy被调用。 - I'm_With_Stupid

0

你是否在任何一个 onPause/OnStop/OnDestroy 方法中取消注册了广播接收器?如果是的话,那么你将无法接收到广播。确保你已经在 AndroidManifest 中注册了广播接收器,并且没有取消注册。如果你想要在后台接收意图,则不应该取消注册它。

如果你在点击登录按钮后立即在另一个活动中启动了单独的服务?因为服务是在后台运行的实体。

如果你的答案是肯定的,我认为你应该考虑检查活动的生命周期,因为有可能当你点击登录按钮时,应用程序将处于后台。此时,活动插入到 onPause() 中。因此,你的第二个活动不活跃,结果无法调用服务。


1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Sumit Sharma

0

你是否在点击登录按钮后立即在另一个Activity中启动了单独的服务? 因为服务是旨在在后台运行的实体。

如果你的答案是肯定的,我认为你应该考虑检查活动的生命周期,因为有可能当你点击登录按钮时,你的应用程序被发送到后台。此时,活动插入到onPause。因此,你的第二个活动不是活动的,结果无法调用服务。

我希望这能帮助你解决问题 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接