Android异步任务 - 哪个活动引起了它?

时间:2011-04-25 22:29:52

标签: android android-asynctask

我遇到了一个异步任务的问题,但我需要使用两次,因为每次我更改GUI的不同部分(更新进度条)。

有没有办法如何确定if - else子句,它调用哪个活动,然后为它们中的每一个做出适当的功能?

编辑:呵呵,答案就在这里,现在还没有......

由于

2 个答案:

答案 0 :(得分:2)

您可以保存一个成员变量,其中包含从中开始的活动/上下文。

//pseudocode
AsyncTask task = new AsyncTask();
task.mActivity = this;
task.execute();

doInBackground内查看活动:

//pseudocode
if (mActivity instanceof MyActivity) {
    // ....
} else {
    // ....
}

答案 1 :(得分:0)

从AsyncTask实现中提取代码并将其委托给Activity。例如:

public interface MyDelegate {
    public void updateProgress(....)
}

您的AsyncTask接受委托并在适当时调用它:

public class MyAsyncTask .... {
    public MyAsyncTask(MyDelegate myDelegate) { ... }

    // somewhere in your code (probably onProgressUpdate)
    myDelegate.updateProgress(...)
}

您的活动/实施代表:

public class MyActivity extends Activity implements MyDelegate {
   public void updateProgress(...) {
       // update ui
   }

   // somewhere in your code:
   new MyAsyncTask(this).execute(...);
}