最近,我被赋予了构建一个像书一样的应用程序的任务。高层设计基本上是几个显示章节的列表视图,然后深入到主题列表,然后到页面本身。还有许多其他列表类型的视图,它们显示书签或文本搜索结果,并且有相当多的动画,一个片段同时滑出另一个片段。这是我第一次使用片段,尽管它们最初似乎是对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] 删除。
我来说两句