首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码重复混淆

代码重复混淆
EN

Stack Overflow用户
提问于 2013-07-16 21:48:39
回答 2查看 137关注 0票数 0

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

  • 一项活动允许用户拍照。此图片被保存,然后上传到服务器。服务器返回一些信息并将其显示在列表中。
  • 另一个活动是画廊。用户可以选择图片,上传图片,并在列表中获取相同的信息(与第一次活动相同)

我实现的方式是:

  • 上传和信息任务是一个独立的AsyncTask,名为WebServiceTask。这两个活动都执行此任务。
  • 我创建了一个WebServiceTaskInvoker接口,这样每个活动都可以指定在preExecute、postExecute、progressUpdate上发生的事情。

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

  • OnPreExecute:这两个活动都检查互联网的连接性。
  • OnProgressUpdate:这两个活动都会更改TextView的文本
  • OnPostExecute:这两个活动都创建了一个动态的ListView,并将结果填充到其中。

我怎么才能解决这个问题?

  • 我知道一种方法是将这两种活动结合在一起,但形成过去的经验,我知道这是麻烦和混乱的。
  • 我可以将UI代码放入WebServiceTask中,但这将导致紧密的内聚。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-16 21:52:10

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

票数 3
EN

Stack Overflow用户

发布于 2013-07-16 22:36:46

凯瑟琳建议的另一种方法是创建一个活动模式枚举。

在启动活动时,将此模式作为附加模式传递。

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

只需确保在常见视图中使用相同的id,一个简单的方法就是在布局文件中使用包含标记。

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

你也可以使用片段,但我没有任何经验,所以我不能进一步建议你。

最后一个注意事项,我将避免将UI代码放入任务中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17687611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档