Java 知道AsyncTask是否正在运行

Java 知道AsyncTask是否正在运行,java,android,performance,android-asynctask,task,Java,Android,Performance,Android Asynctask,Task,我有一个活动,每次通话结束都会被呼叫。此活动具有以下任务 UploadRecordings uploadRecordings = new UploadRecordings(); uploadRecordings.execute(context); 现在,当我接到一个接一个的电话时,每次都会创建新的AYSNTASK。但是Android将异步任务的数量限制为5个。所以问题是我想检查一个异步任务是否已经在运行,如果发现正在运行,不要创建一个新的异步任务。如果没有正在运行的AsyncTask,我想创建

我有一个活动,每次通话结束都会被呼叫。此活动具有以下任务

UploadRecordings uploadRecordings = new UploadRecordings();
uploadRecordings.execute(context);
现在,当我接到一个接一个的电话时,每次都会创建新的AYSNTASK。但是Android将异步任务的数量限制为5个。所以问题是我想检查一个异步任务是否已经在运行,如果发现正在运行,不要创建一个新的异步任务。如果没有正在运行的AsyncTask,我想创建一个新的AsyncTask


感谢您的帮助。

重写
onPostExecute()
异步任务的方法,该方法在调用完成时执行。在
onPostExecute()
中设置一些标志,并相应地进行操作。

用于获取
异步任务的状态。如果状态为,则您的任务正在运行

这边走

if(uploadRecordings.getStatus() == AsyncTask.Status.RUNNING){
    // My AsyncTask is currently doing work in doInBackground()
}
有关更多详细信息,请阅读:

您可以使用

返回此任务的当前状态


阅读处理异步任务

AsyncTask
放在一个片段中

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

请查找处理
异步任务
的完整实现和说明


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

if(uploadRecordings == null || uploadRecordings.getStatus() != AsyncTask.Status.RUNNING){
   uploadRecordings = new UploadRecordings();
   uploadRecordings.execute(context);
}
这假设您的
上传记录
是一个成员变量。e、 g


private UploadRecordings UploadRecordings=null

对于简单解决方案,请在onPostexecute()中完成异步任务后创建布尔值并进行设置。您可以使用简单的接口类来实现这一点。但我应该在哪里编写这段代码呢。每次都会创建UploadRecordings的新对象。我需要知道在每次创建uploadRecording时应该在何处编写此代码。@MehulKanzariya Declare global and CheckingNot当每次调用结束时调用活动时,变量不会初始化。
if(uploadRecordings == null || uploadRecordings.getStatus() != AsyncTask.Status.RUNNING){
   uploadRecordings = new UploadRecordings();
   uploadRecordings.execute(context);
}