代码重复混乱

时间:2013-07-16 21:48:39

标签: android design-patterns

在我的Android应用程序中,我有两个活动。

  • One Activity让用户拍照。此图片已保存,然后上传到服务器。服务器返回一些信息并将其显示在列表中。

  • 其他活动是一个图库。用户可以选择图片,上传图片并在列表中获取相同的信息(与第一个活动相同)

我实施的方式是:

  • 上传和信息任务是一个名为WebServiceTask的单独AsyncTask。两个活动都执行此任务。

  • 我创建了一个WebServiceTaskInvoker接口,以便每个活动都可以指定preExecute,postExecute,progressUpdate上发生的事情。

问题是这两个活动在preExecute,postExecute和progressUpdate上完全相同,所以两个活动之间的代码重复。

  • OnPreExecute:两个活动都会检查互联网连接

  • OnProgressUpdate:两个活动都会更改TextView的文本

  • OnPostExecute:两个活动都创建一个动态ListView并填充 结果。

我该如何解决这个问题?

  • 我知道一种方法是将两种活动合二为一,但形成过去的经验,我知道这很麻烦而且很混乱。

  • 我可以将UI代码放在WebServiceTask中,但这会导致紧密的凝聚力。

2 个答案:

答案 0 :(得分:3)

为执行公共代码的两个活动实现基类。将活动实现为基类的子类以执行不同的代码。

答案 1 :(得分:1)

Catherine建议的替代方法是创建一个活动模式枚举。

启动活动时将此模式作为额外模式传递。

如果模式是MODE_GALLERY,则加载gallery.xml布局并填充它,如果没有则加载其他布局。

只需确保对公共视图使用相同的ID,一种简单的方法是在布局文件中使用include标记。

这样做的好处是,您只有一个活动文件,而不是子类化方法所需的三个活动文件。

你也可以使用片段,但我对这些片段没有任何经验,所以我不能再告诉你了。

最后一点,我会避免将UI代码放入任务中。