从广播接收器向活动发送警报

时间:2014-06-03 18:55:33

标签: android broadcastreceiver

我正在构建一个注册广播接收器以进行连接更改的应用。当连接可用时,应用程序执行GET请求并在ListView中显示数据。

我注册了广播接收器(连接变化),它按预期工作。但我有一个很大的困境。我想在连接可用时通知MainActivity。

我的第一种方法是使用从Observable扩展的类,并在MainACtivity中实现Observer接口。我停止了这个解决方案,因为我开始使用静态变量和静态方法。我的另一个解决方案是使用在其中注册的自定义广播,该想法从广播接收器发送广播并在MainActivity中捕获它。

我阅读了几条建议,无法获得推荐的解决方案。这种情况的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您是否只有在当前正在运行时才需要通知活动?或者下次它运行?

对于第一种情况,您可以在活动中创建第二个BroadcastReceiver,在onResume() / onPause()中注册/取消注册,然后通过服务发送的意图通知它(所有这些都使用LocalBroadcastManager)。然而,这是你的意图(嘿)那么你可能在原始广播的活动中有第二个接收者,所以我猜它不太可能。

另一种方式(下次访问时通知Activity)更简单,只需使用SharedPreferences来记录一个布尔标志,指示任务正在等待处理。恢复活动后,检查此标志,执行所需的工作(确保连接仍然可用),然后将其清除。

第三种可能的情况(我认为更可能的情况,即使它与您对问题的描述不匹配)是您希望在连接可用时下载和存储数据,然后只是让活动在启动时加载它。在这种情况下,服务将执行下载,然后通知或使用标记技巧,以便活动知道新数据可用。

根据具体情况,您可能还需要查看Sync Adapters