当ListView片段或其他(嵌套的)片段发生问题时,我想刷新ListView(自定义类)中的特定行。
我当前正在使用此模式(News
是NewsView
所显示的自定义类):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的更多信息