在暂停时如何让活动对本地广播作出反应?

在活动暂停或停止时,通过LocalBroadcastManager发送的广播会对活动(如果有)做出反应的最佳方式是什么? 如果LocalBroadcastManager与普通广播不同,我找不到太多细节,但如果活动在后台,它似乎仍然被称为事件。 但这会导致一些问题,因为只要未显示活动,就无法进行某些UI修改。

这就是为什么我更愿意在活动重回顶峰时处理所有广播。 但是我该怎么做呢 我正在考虑一个队列,它将获取在活动恢复运行状态时执行的可运行列表。 但我认为这是某种矫枉过正,因为机器人确实有一个机制。

那么这样做的正确方法是什么?

我过去所做的是让我的活动在onResume上注册一个接收器并取消注册onPause。

完成证书创建后,将更新视图和发送广播所需的任何信息保存到本地存储。

如果活动正在运行,它将接收广播并自行更新。 如果它被暂停,您应该读取on​​Resume上的本地存储并相应地更新。

毕竟我找到了符合我需求的解决方案。 我创建一个BroadcastReceiver,用作我的活动的子类。 每当活动进入暂停状态时,它将在我的BroadcastReceiver上调用.pause()。 从那时起,所有传入的Intent都被放入队列中,并在从活动调用.unpause()时刷新。

你为什么不简单地注销接收器onDestroy? 因此,当活动暂停时,您仍然可以在接收器中执行代码?