我有一个Asynctask
在后台做了一些工作,我就这样定义了。
MyAsynctask myAsynctask;
然后在我的按钮点击事件中,我做了类似这样的事情:
public void onClick(Event event){
mAsynctask = new MyAsynctask(context);
mAsynctask.execute();
}
当我运行代码时,我在后台执行的工作似乎总是运行良好。但是,如果我在第一次AsyncTask
未完成时第二次按下按钮,我恐怕会同时运行两个AsyncTask
。
这可能是一个问题吗?
答案 0 :(得分:1)
您可以按如下方式检查任务的状态:
int taskStatus = myAsynctask.getStatus();
状态可以是以下任何一种:
AsyncTask.Status.PENDING
AsyncTask.Status.RUNNING
AsyncTask.Status.FINISHED
所以你可以这样做:
if(taskStatus == AsyncTaskStatus.RUNNING){
//task is still running
}
答案 1 :(得分:0)
您可以在yourButton.setEnabled(false);
中使用onClickListener
,并在onPostExecute
的{{1}}中完成任务后再次启用按钮。像这样的东西:
AsynchTasck
然后在你的boolean myFlag = true;
public void onClick(Event event){
//yourBusston.setEnabled(false);
if (myFlag){
myFlage = false;
mAsynctask = new MyAsynctask(context);
mAsynctask.execute();
}
}
做类似的事情:
AsynchTask
您也可以通过以下代码行取消任务:
@Override
protected void onPostExecute(Void void) {
//after you ensure that your task was successful
// yourButton.yourButton.setEnabled(true);
myFlag = true;
}