碎片会导致脂肪活动吗?

约翰·史密斯

最近,我被赋予了构建一个像书一样的应用程序的任务。高层设计基本上是几个显示章节的列表视图,然后深入到主题列表,然后到页面本身。还有许多其他列表类型的视图,它们显示书签或文本搜索结果,并且有相当多的动画,一个片段同时滑出另一个片段。这是我第一次使用片段,尽管它们最初似乎是对UI功能的很好的封装,但我不禁要问,是否像我的情况那样使用它们会导致“胖” Activity类,必须管理几个不同的片段,并且必须实现它们发布的多个接口。

作为一个示例,显示了一个活动实现的接口:

public class NodeListActivity extends Activity implements 
        NodeListFragment.OnItemSelectedListener,
        SearchListFragment.OnItemSelectedListener,
        NodeFragment.OnLinkSelectedListener,
        OnCloseSelectedListener,
        OnActionBarItemSelectedListener,
        OnBookmarkSelectedListener

在较旧版本的Android上,我将为每个主屏幕/功能创建一个单独的“活动”。这是代码的气味,还是几个片段和动画的组合导致活动发胖?

常用软件

几个片段和动画的组合会导致胖活动吗?

是的。但是,这变得越来越普遍,因此代码臭味也减少了。

有点臭的是接口的loooooooooooooooooooooong列表。:-)

对于复杂的事情,您可能会发现使用事件总线(Square的Otto,greenrobot的EventBus甚至是LocalBroadcastManager)是一种更干净的方法。片段可以使用一个接口将事件发布到总线上,而宿主活动可以预订该事件,而不是让片段使用接口来告知其主机活动有关事件的信息(这是我对所有接口的来源的猜测)。这确实增加了运行时开销,但是却增加了避免所有接口的好处。它也可以扩展到其他组件,例如在后台需要发生某些事件时发布事件的服务,如果UI层存在,则需要知道该事件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章