片段回调与Android中的EventBus

时间:2015-05-31 04:45:41

标签: android android-fragments android-activity callback event-bus

我遇到了这个问题。我的Activity是片段容器,所以为了在活动和片段之间进行通信,我使用了常见的Callback方法。在这种情况下,我的活动必须根据片段数量实现大量的回调接口 我不喜欢硬编码和不可读的代码。在我的情况下,我的类声明可以用几行来列出所有接口 我试图摆脱这个。

另一种方法是使用EventBus模式 在活动中

EventBus.getDefault().register(this);

片段

EventBus.getDetault().post(new MyEvent(description));

并在活动中处理多种事件类型。

也许最好在这里使用EventBus而不是默认的Callback方法??
或者也许我的错是我的活动中存有大量碎片(God Object),最好使用活动而不是Fragment?

请建议哪种方法更好?

2 个答案:

答案 0 :(得分:4)

对于简单的一个Activity到一个Fragment层次结构,回调是最简单的决定。但想想包含Fragment的Activity,Fragment包含可滑动的ViewPager,ViewPager的每个标签都有片段A,B,C。

片段A,B,C将长途旅行将事件发送给母亲活动,并且在crazy complex Android Activity-Fragment lifecycle dances期间恢复活动与儿童之间的界面连接可能会丢失。在这种情况下,像otto这样的事件总线可能是一个不错的选择。

事件总线方法的缺点是,很难维护事件的来源。因此,建议保留一些发件人。

答案 1 :(得分:1)

您的interface方法非常棒,只需跟上它们,然后尝试切片/制作interface静态内容并添加所有小void和{{1}转到该接口,这样你就可以实现一个并调用这些函数。

return methodEventBus怎么样?它是一个偏好的问题,你觉得哪个更适合你,毕竟如果你处理10,000个请求并且讨厌100 LocalBroadcastReceiver s,你最终会使用1并嵌套99。

&安培;只是忘记了,最好保留很多interface而不是Fragment,因为在一天结束时Activity生命周期很难维持,其次是你无法真正控制Activity生命周期与ActivityFragment相比,所有人都是好奴隶,为你提供更好的服务

希望它有价值的