取消所有AsyncTask?

Ser*_*ici 5 queue android android-asynctask

我有一个用于获取媒体文件大拇指的类.像类这样的Loader AsyncTask为每个启动一个ImageView(被调用SomeAdapter#getView()).任务本身做了很多事情,其中​​一个是调用DiskLruCache,但是当SD卡卸载时,当任务仍在运行时,应用程序崩溃.

我知道如果卡状态改变了如何注册.

所以我需要一种方法来停止所有正在运行的任务.你能帮忙的话,我会很高兴.

Sum*_*ant 8

只是遍历所有列表并使用以下将取消所有正在运行的asynctask.

if(myAsyncTask.getStatus().equals(AsyncTask.Status.RUNNING))
 {
     myAsyncTask.cancel(true);
 }
Run Code Online (Sandbox Code Playgroud)

  • 我现在这个话题已经很老了。当您跟踪所有 AsyncTask 时,这会起作用,在您的示例中: (myAsyncTask= new class().execute.()... 但是,当您启动 100 个 mini asyctask 而不保留任何引用(例如 (new class().execute)时呢) .()...). 没有其他方法可以取消所有引用的具有相同类名的异步任务吗? (3认同)