知道AsyncTask是否正在运行

时间:2017-04-24 05:40:11

标签: java android performance android-asynctask task

我有一个活动,每次呼叫结束时都会被调用。此活动低于AsyncTask。

UploadRecordings uploadRecordings = new UploadRecordings();
uploadRecordings.execute(context);

现在,当我每次都有新的AysncTask创建时,我会一个接一个地调用。但Android将AsyncTask的数量限制为5.所以问题是我想检查AsyncTask是否已经在运行,如果发现正在运行,则不要创建新的AsyncTask。如果没有运行AsyncTask,我想创建一个新的AsyncTask。

任何帮助都要得到赞赏。

5 个答案:

答案 0 :(得分:5)

使用getStatus()获取[5: :2]的状态。如果状态为AsyncTask.Status.RUNNING,那么您的任务正在运行。

检查这种方式

AsyncTask

更多详情阅读:Android, AsyncTask, check status?

答案 1 :(得分:4)

您可以使用 getStatus ()

  

返回此任务的当前状态。

if(YourAsyncTaskOBJ.getStatus() == AsyncTask.Status.RUNNING)
    {
      // AsyncTask Running  
    }

阅读 How to check if Async Task is already running

答案 2 :(得分:0)

覆盖onPostExecute()的{​​{1}}方法,该方法在呼叫完成时执行。在AsyncTask中设置一些标记并相应地继续。

答案 3 :(得分:0)

处理AsyncTask

AsyncTask放入片段。

使用片段可能是处理配置更改的最简洁方法。默认情况下,Android会像活动一样销毁并重新创建片段,但是,片段可以保留其实例,只需在其中一个回调方法中调用:setRetainInstance(true),例如在onCreate()

请找到完整的实施和说明来处理AsyncTask

Handle Android AsyncTask

答案 4 :(得分:0)

如果您想在没有任何内容运行的情况下创建单个AsyncTask,您可以执行以下操作:

if(uploadRecordings == null || uploadRecordings.getStatus() != AsyncTask.Status.RUNNING){
   uploadRecordings = new UploadRecordings();
   uploadRecordings.execute(context);
}

这假定您的uploadRecordings是成员变量。 e.g。

private UploadRecordings uploadRecordings = null;