如果我运行异步调用onResume
,有一种很好的方法可以检测到异步调用是否正在运行而不再调用它?
因为我正在使用片段AsynTask
中的onResume
进行网络通话,而且似乎经常被调用
更新
问题在于,当调用onResume
时,没有可用的变量。所以我不再有异步任务的有效参考来检查状态
代码如下:
public void onResume() {
AsynTask<Void, Void, String> theTask = new AsyncTask<>() {
//code to run
};
theTask.execute();
//code
}
所以我怎么想这样做,因为我没有参考?我的意思是我应该将theTask
保留在哪里才能取消onResume
?
答案 0 :(得分:1)
您可以getStatus
获取public sealed class NotifyTaskCompletion<TResult> : INotifyPropertyChanged
{
public NotifyTaskCompletion(Task<TResult> task)
{
Task = task;
if (!task.IsCompleted)
{
var _ = WatchTaskAsync(task);
}
}
private async Task WatchTaskAsync(Task task)
{
try
{
await task;
}
// ReSharper disable once EmptyGeneralCatchClause
catch (Exception e)
{
}
var propertyChanged = PropertyChanged;
if (propertyChanged == null)
{
return;
}
的状态。要检查它是否正在运行,您可以将其与AsyncTask.Status.RUNNING
进行比较。