【发布时间】:2014-01-06 21:31:42
【问题描述】:
当 ListView 片段或其他(嵌套)片段中发生某些事情时,我想刷新 ListView(自定义类)中的特定行。
我目前正在使用这种模式(News 是 NewsView 正在显示的自定义类):
-
NewsView构造函数:- 用 IntentFilter 注册 BroadcastReceiver 例如
"UPDATE_NEWS_ITEM" - 在 onReceive 中我反序列化
News项目并比较项目 ID
- 用 IntentFilter 注册 BroadcastReceiver 例如
- 动作发生在某处
- 我创建了 Intent("UPDATE_NEWS_ITEM"),并将
Newsitem 添加为 Serializable Extra。
- 我创建了 Intent("UPDATE_NEWS_ITEM"),并将
这意味着每个 NewsView 都必须从 Intent 反序列化 News,因此这种方法有一点开销。
另一方面,我可以使用 IntentFilter 为每个 NewsView 注册一个广播接收器,例如 "UPDATE_NEWS_ITEM_154",其中 154 是项目的 ID。然后广播意图将只到达一个接收器,它似乎更有效。
注册这么多广播接收器有什么缺点吗?还是 Android 会愉快地应对可能的数百个?
【问题讨论】:
-
有什么原因不能在接收器和列表视图类之间使用
Interface,或者直接在类中创建接收器的实例并使用registerReceiver和unregisterReceiver? -
我在简化事情,有多个显示
News的类和多个生成刷新的类,所以我认为不是。 -
在所有这些类中实现回调监听器肯定不比接收意图更多的工作?在不了解您的架构的情况下,您可以使用侦听器创建一个基类 Activity,然后从中继承?