碎片是否会导致占用过多资源的活动?

6
最近我被分配了一个构建类似书的应用程序的任务。高级设计基本上是一对显示章节的列表视图,然后深入到主题列表,最后进入页面本身。还有一些其他类型的列表视图,用于显示书签或文本搜索结果,并且有相当数量的动画,同时滑动一个片段并将另一个片段滑入。这是我第一次使用片段,虽然它们首先看起来是UI功能的良好封装,但我不禁想知道它们的使用,就像在我的情况下一样,是否会导致“臃肿”的Activity类,需要管理几个不同的片段并实现它们发布的几个接口。
作为一个示例,显示一个Activity实现的接口:
public class NodeListActivity extends Activity implements 
        NodeListFragment.OnItemSelectedListener,
        SearchListFragment.OnItemSelectedListener,
        NodeFragment.OnLinkSelectedListener,
        OnCloseSelectedListener,
        OnActionBarItemSelectedListener,
        OnBookmarkSelectedListener

在旧版本的Android中,我会为每个主屏幕/功能创建一个单独的Activity。这是否是代码异味还是多个片段和动画组合导致了臃肿的Activities?

1个回答

8
组合多个碎片和动画会导致Activity变得臃肿吗?
是的。然而,这种情况越来越普遍,因此代码不那么臭了。
有点臭的是那个长长的接口列表。 :-)
对于这样复杂的情况,您可能会发现使用事件总线(Square的Otto、greenrobot的EventBus,甚至是LocalBroadcastManager)是一种更清洁的方法。 碎片可以向总线发布事件,而不是使用接口告诉它们的托管活动发生了什么事件(我猜这就是所有接口的来源),托管活动可以订阅该事件。 这确实增加了一点运行时开销,但避免了所有接口的好处。 它还可以扩展到其他组件,例如服务在后台发生某些事情时发布事件,如果存在UI层,则需要知道这些事情。

谢谢。我非常感谢您的反馈。我会看一下事件总线。 - John J Smith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接