【问题标题】:Android broadcast receiver when the app is in background应用程序在后台时的 Android 广播接收器
【发布时间】:2022-05-20 12:43:07
【问题描述】:

我遇到了 android 广播接收器的问题。我有一个登录页面,成功登录后,应用程序进入另一个活动。它包含一个广播接收器。一旦单独的服务完成其操作,我将发送广播。该应用程序在快乐的一天场景中运行良好。

我的问题是,在我输入用户名/密码并点击登录按钮后,我将应用程序发送到后台。但是当应用程序在后台时,广播接收器不会接收到我正在发送的广播。

有人知道这个问题吗?

任何帮助将不胜感激。 提前致谢。

【问题讨论】:

  • 您注册了哪些活动?
  • 我已经在第二个活动的 on create 方法中注册了广播接收器。第二个活动是指在登录页面之后。 (此活动更改将在应用处于后台时完成)
  • 将您的 Brodcast 注册到清单中
  • 感谢大家在清单中注册广播工作。

标签: java android broadcastreceiver


【解决方案1】:

您是否在任何活动的 onPause/OnStop/OnDestroy 方法中取消注册广播接收器?如果是,那么您将不会收到广播。确保您已在 AndroidManifest 中注册广播接收器。并且没有未注册。如果您想在后台接收意图,则不应取消注册。

【讨论】:

  • 在清单中注册广播成功了 :) 谢谢 drax
  • 此解决方案也适用于 localbroadcastmanager,也是您在片段中使用广播接收器时的解决方案,当片段不在视野范围内时,会调用 onpause/ondestroy。
【解决方案2】:

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

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

希望它能帮助您解决问题:)

【讨论】:

    【解决方案3】:

    您是否在任何活动的 onPause/OnStop/OnDestroy 方法中取消注册广播接收器?如果是,那么您将不会收到广播。确保您在AndroidManifest 中注册了广播接收器。并且没有未注册。如果你想在后台接收意图,那么你不应该取消注册它。 0

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

    如果您的回答是肯定的,我认为您应该考虑检查活动的生命周期,因为当您点击登录按钮时,应用程序可能会在后台运行。现在,此时活动插入到onPause()。因此,您的第二个活动未激活,因此无法调用该服务。

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    • 2015-11-12
    相关资源
    最近更新 更多