【问题标题】:Android IntentFilter performanceAndroid IntentFilter 性能
【发布时间】:2014-01-06 21:31:42
【问题描述】:

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

我目前正在使用这种模式(NewsNewsView 正在显示的自定义类):

  • NewsView 构造函数:
    • 用 IntentFilter 注册 BroadcastReceiver 例如"UPDATE_NEWS_ITEM"
    • 在 onReceive 中我反序列化 News 项目并比较项目 ID
  • 动作发生在某处
    • 我创建了 Intent("UPDATE_NEWS_ITEM"),并将 News item 添加为 Serializable Extra。

这意味着每个 NewsView 都必须从 Intent 反序列化 News,因此这种方法有一点开销。

另一方面,我可以使用 IntentFilter 为每个 NewsView 注册一个广播接收器,例如 "UPDATE_NEWS_ITEM_154",其中 154 是项目的 ID。然后广播意图将只到达一个接收器,它似乎更有效。

注册这么多广播接收器有什么缺点吗?还是 Android 会愉快地应对可能的数百个?

【问题讨论】:

  • 有什么原因不能在接收器和列表视图类之间使用Interface,或者直接在类中创建接收器的实例并使用registerReceiverunregisterReceiver
  • 我在简化事情,有多个显示 News 的类和多个生成刷新的类,所以我认为不是。
  • 在所有这些类中实现回调监听器肯定不比接收意图更多的工作?在不了解您的架构的情况下,您可以使用侦听器创建一个基类 Activity,然后从中继承?

标签: android android-intent


【解决方案1】:

如果您只在应用程序中广播,请考虑通过 LocalBroadcastManager 使用意图,而不是在清单中使用意图过滤器广播意图。

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

更多关于LocalBroadcastManager here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-08
    • 1970-01-01
    • 2020-06-21
    • 2020-08-18
    • 2016-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多