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