繁体   English   中英

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

[英]Send an alert to an Activity from Broadcast Receiver

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

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

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

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

您是否仅需要在活动当前正在运行时通知它? 还是下次运行?

对于第一种情况,您可以在活动中创建第二个BroadcastReceiver ,在onResume() / onPause()注册/注销,然后通过Service发送的意图通知它(所有这些都使用LocalBroadcastManager )。 但是,这是您的意图(heh),那么您可能还需要在活动中为原始广播添加第二个接收者,所以我想这不太可能。

另一种方法(在下次访问Activity时通知它)更加简单,只需使用SharedPreferences记录一个布尔型标志即可表明该任务处于待处理状态。 恢复活动后,请检查该标志,进行所需的工作(确保连接仍然可用),然后清除它。

第三种可能的情况(即使它与您对问题的描述不符,我认为更可能)是您想在连接可用时下载并存储数据,然后将活动加载进去当它开始的时候。 在这种情况下,服务将执行下载,然后通知或使用标志技巧,以便活动知道有新数据可用。

根据情况,您可能还需要看一下Sync Adapters

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM