2

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

还有另一种方法是使用EventBus模式。
活动中

EventBus.getDefault().register(this);

在片段中

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

并处理活动中的几种事件类型。

也许在这里使用 EventBus 会更好,而不是默认的回调方法?
或者也许是我的错,我的活动包含很多片段(上帝对象),最好使用活动而不是 Fragment ?

请建议哪种方法更好?

4

2 回答 2

4

对于简单的一个 Activity 到一个 Fragment 层次结构,回调是最简单的决定。但是想想Activity包含一个Fragment,而Fragment包含swipe-able ViewPager,而ViewPager的每个tab都有Fragment A,B,C。

Fragment A,B,C 将长途跋涉向母亲 Activity 发送事件,并且在疯狂复杂的 Android Activity-Fragment 生命周期之舞中恢复时,Activity 和孩子之间的接口连接可能会丢失。在这种情况下,像otto这样的eventbus可能是一个不错的选择。

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

于 2015-05-31T05:15:18.263 回答
1

您的interface方法很棒,只要跟上它们,也许尝试切片/制作您的interface静态并将所有小的小voids 和return methods 添加到该接口,这样您就可以实现一个并调用函数。

EventBus? 怎么样LocalBroadcastReceiver?这是一个偏好问题,您觉得哪个更适合您,毕竟如果您处理 10,000 个请求并且讨厌拥有 100 个interfaces,您最终将使用 1 并嵌套 99。

& 只是忘记了,最好持有很多Fragment而不是Activity因为在一天结束时,Activity生命周期很难维持第二,与sActivity相比,你无法真正控制好 ies并且是一个很好的奴隶,更好地为你服务FragmentFragment

希望它有价值

于 2015-05-31T05:05:29.570 回答