调用postExecute时,在AsyncTask中添加侦听器

时间:2016-02-26 01:38:30

标签: android android-asynctask

我有一个AsyncTask类。

这是代码。

partition.vec <- function(vec, replace= FALSE, seed= 512L) {
  set.seed(seed)
  s <- sample(1:length(vec), size= floor(length(vec) / 2), replace= replace)
  return(list(vec[s],vec[-s]))
}

# example:
v <- sample(1:100, size= 10)
partition.vec(v)

当调用onPostExecute方法时,我想在活动中获得布尔值。

感谢。

2 个答案:

答案 0 :(得分:3)

您需要使用回调参考,然后通过它传递信息。

private class WaitSec extends AsyncTask<Void, Void, Boolean>{
public AsyncTaskCallback callback = null;

public WaitSec(AsyncTaskCallback callback){
        this.callback = callback;
}

@Override
protected Boolean doInBackground(Void... params) {
    try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    if(CheckSomeUtil.isItOk()) {
        return true;
    } else {
        return false;
    }
}
@Override
protected void onPostExecute(Boolean aBoolean) {
    if(aBoolean)
        // in this line. is i want to set listener.
      if(callback != null) {
          callback.onPostExecute(aBoolean);
      }
    super.onPostExecute(aBoolean);
}

public interface AsyncTaskCallback {
        void onPostExecute(Boolean aBoolean);
}
}

Your Activity.java

public class YourActivity implements AsyncTaskCallback{
   private WaitSec asyncTask;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    asyncTask  = new WaitSec(this);
    asyncTask.execute();
  }

  void onPostExecute(Boolean aBoolean){
     // get the boolean here and do what ever you want.
  }
}

答案 1 :(得分:1)

为什么不将此异步任务作为活动中的内部类,以便您可以访问活动的方法。

警告:如果处理不当,异步任务可以保留您的活动           实例,不会让它被垃圾收集。

相关问题