AsyncTask从很多地方调用了很多东西

时间:2013-04-25 13:34:36

标签: android user-interface android-asynctask

我正在使用简单的AsyncTask将网页的源代码下载为String。到目前为止一切正常。

但是,我不想总是对结果字符串做同样的事情,有时我想用它来填充gui,有时我想解析它,有时我想用它作为参数调用更多的函数。 实际上,我有多个活动和多个需要下载页面源代码的类。

当然,onPostExecute()必须处理我的Task的结果,但是因为它会从很多地方调用,并且出于很多不同的原因我真的不知所措。

我该怎么办?

我真的不想编写20个AsyncTasks,它们总是在doInBackground(...)中使用不同的onPostExecute执行相同的操作,也不希望来自20个不同类/活动的代码最终在一个onPostExecute中,我的代码维护起来很复杂。

有什么建议吗? 感谢

2 个答案:

答案 0 :(得分:1)

我会通过使用接口来解决它。创建一个异步任务,在doInBackground中执行正确的操作,并获取一些参数,以便您知道在onPostExecute中要执行的操作,并将参数和结果传递给onPostExecute。

然后使用 handleSourceCodeString(String source); 等方法创建一个接口,然后为您要执行的每个操作实现一个类。然后将类放在某个init函数的映射中。

Map<String, Class> myActionMap = new HashMap<String,Class>;
myActionMap.put("parse-soruce", ParseSource.class) //(where ParseSource.class implements your interface)

然后在你的postExecute中做类似的事情:

((MyActionInterface)myActionMap.get(action).newInstance()).handleSourceCodeString(source);

答案 1 :(得分:0)

我发现这个...喜欢这个想法......看起来很简单,比我认为使用界面更好。

AsyncTask onPostExecute call from outside the AsyncTask

看第一个答案