Android 的兼容包支持 LocalBroadcastManager,它可以在我的进程中发送广播。 http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html
到目前为止,我一直在使用回调(类似于 OnClickListener 的接口)在我的应用程序的不同部分之间传输数据(异步和同步)。
我想知道一个是否比另一个更好。有什么意见吗?
Android 的兼容包支持 LocalBroadcastManager,它可以在我的进程中发送广播。 http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html
到目前为止,我一直在使用回调(类似于 OnClickListener 的接口)在我的应用程序的不同部分之间传输数据(异步和同步)。
我想知道一个是否比另一个更好。有什么意见吗?
LocalBroadcastManager
让您可以使用Intent
's 和IntentFilter
's,因此更容易从系统范围的广播迁移到本地广播。它还有一些排队代码,可能比您自己的代码更可靠(或不可靠,取决于您的实现有多复杂)。除此之外,它本质上只是将接收者列表保存在内存中并迭代它们以找到匹配项。
另一种选择是使用事件总线,例如 Square 的Otto(基于 Guava),它增加了类型安全性并且同样高效。
据我所知,LocalBroadcastManager 就像一个魅力。它很轻松,您可以在 Intent 中传递任何参数并在聆听期间将其取回。唯一的可靠性是广播管理器将意图放入队列。
什么时候应该使用 LocalBroadCastManager? 当您有单个活动 (FragmentActivity) 和大量的 Fragment 类时,在单个活动中拥有一个 localBroadcastManager 会更容易。
如果您有很多活动,那么使用它可能会有所帮助,但请记住,您已经在使用意图来启动新活动,因此如果有任何待处理的意图,则此广播将在队列中,您将需要等待。
因此,最好的用途是具有大量片段的单一活动。