当ListView片段或其他(嵌套的)片段发生问题时,我想刷新ListView(自定义类)中的特定行。

我当前正在使用此模式(NewsNewsView所显示的自定义类):


NewsView构造函数:

向IntentFilter注册BroadcastReceiver,例如"UPDATE_NEWS_ITEM"
在onReceive中,我反序列化News项目并比较项目ID

行动发生在某处

我创建Intent(“ UPDATE_NEWS_ITEM”),并将News项目添加为Serializable Extra。



这意味着每个NewsView都必须从Intent中反序列化News,因此此方法会产生一些开销。

另一方面,我可以使用NewsView之类的IntentFilter为每个"UPDATE_NEWS_ITEM_154"注册一个广播接收器,其中154是项目的ID。这样,广播意图将仅到达一个接收者,并且看起来更有效。

注册如此多的广播接收者是否有不利之处?还是Android会很乐意应对其中的数百个?

最佳答案

如果仅在应用程序内进行广播,请考虑通过LocalBroadcastManager使用意图,而不是在清单中广播具有意图过滤器的意图。

据我所知,那些直接转换为函数调用,并且不通过操作系统队列。

关于LocalBroadcastManager here的更多信息

10-08 09:01