1

我想实现通用的 AsyncTasks 工厂,以免每次要运行异步操作时都编写大量重复代码。但是我有一个问题。

所以我想在 GlobalActivity 中定义这个工厂类,每个想要使用该 AsyncTasks 工厂的 Activity 都应该子类化,但是我需要在从 GlobalActivity 继承的每个活动 Activity 中使用 doInBackground 方法的结果。我的想法是在该类中定义一些方法 updateCurrentActivity() ,每个子类都必须覆盖该方法并对 doInBackground 结果进行一些操作(例如显示它)。但是如何处理这个结果我不知道。例如这里是工厂 onPostExecute 定义:

protected void onPostExecute(HashMap<String, Object> result)
    {  
        currentActivityData = result;
                   //How to pass that result to the current Active
                   //activity which is overriding this method?
        updateCurrentActivity();
    }

创建这样的工厂是否是一个共同的好主意。或者最佳实践是new AsyncTask...每次我想使用 AsyncTask 时都编写?

4

1 回答 1

2

您可以创建扩展 AsyncTask 的 MyTask 类,并从您想要执行任务的活动的构造函数中传递一个处理程序,例如

final Handler mHandler = new Handler() { 

  public void handleMessage(Message msg) 
  { 
       //get your data here
       int something = msg.arg1; 
  } 
}; 

public void myMethodInsideActivity{
    new MyTask(this, mHandler).execute();
}

并像这样从您的任务的 pre、progressUpdate 或 post 中调用它

Message msg = new Message();
msg.arg1 = 1;
actHandler.sendMessage(msg);

这样,您只有一个任务类和多个实例,每个实例都通过处理程序与其活动相关联

于 2013-03-06T14:29:11.333 回答