确定哪个活动正在调用AsyncTask

时间:2016-10-26 18:30:54

标签: android android-asynctask

有没有办法找出哪个活动正在调用AsyncTask?我有两个调用它的活动,我想在onPostExecute()中执行不同的操作,具体取决于调用它的活动。

类似的东西:

protected void onPostExecute(String result) {
    //do some stuff with result
    if (callingActivity == mainActivity) {
        //do something
    } else {
        //do something else
    }
} 

2 个答案:

答案 0 :(得分:1)

我们总是有 instanceof 来进行救援。在创建AsyncTask时捕获callingActivity并在onPostExecute中使用它。

例如,

ActivityA和ActivityB有两个活动。您可以登录onPostExecute,如

class AsyncTask<..,..,..> {

  private Activity a;

  public AsyncTask(Activity a) {
    this.a = a;
  }

  protected void onPostExecute(String result) {
    //do some stuff with result
    if (a instanceof ActivityA) {
        //do something
    } else if (a instanceof ActivityB) {
        //do something else
    }
  } 
}

答案 1 :(得分:1)

让您的活动继承您的CommonAsyncTask,覆盖onPostExecute()

new CommonAsyncTask() {
  @Override
  protected void onPostExecute(String result) {
    // Execute the common code in `CommonAsyncTask`
    super.onPostExecute(result);
    // Now execute the code unique to this activity
  }
};