在广播接收器中保存状态以供稍后在 UI 中使用

Saving status in broadcast receiver to be later used in the UI

我有一个广播接收器,它跟踪一些外部事件并根据需要对它们采取行动。我的应用程序中还有一个片段显示了最后 event/status is/was 的状态摘要。

现在我正在使用共享首选项将此状态保存在接收器中,然后使用 onSharedPreferenceChange 侦听器更新片段(如果当前正在查看片段)。

我在和自己争论是否应该这样做?或者在片段开始时向片段注册一个广播接收器,而不是使用共享首选项。

但我遇到的问题是片段在打开时将无法获取当前状态,并且在广播另一个事件之前不知道发生了什么。

这是对共享首选项的适当使用吗?状态会从每隔几秒一次到 30 秒以上不等。

如果每秒或更短时间接收到 update/status 变化,人们会在片段中使用广播接收器吗?

即使您使用了 BroadcastReceiver,您仍然需要从某处获取初始 event/status 信息。因此,无论如何,您都需要保留 event/status 信息。由于您可能只需要保留几个值(并且不需要那么频繁地访问它们),因此使用 SharedPreferences 是一种非常合理的方法。