Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何取消异步任务_Android_Android Asynctask - Fatal编程技术网

Android 如何取消异步任务

Android 如何取消异步任务,android,android-asynctask,Android,Android Asynctask,我有一种方法可以在名为fillimages的列表视图中填充图像,这是一项异步任务,我的问题是如果我想刷新我的应用程序,它会等待fillimages完成,然后启动刷新,这是浪费时间和资源,因此,在side fillimages中插入了一个cancel语句,但现在的问题是,当我刷新fillimages cancel时,当我再次调用它时,它将不会运行(因为它读取cancel部分)。你能帮我解决这个问题吗,下面是代码 fillimages fl = new fillimages(); fl.excute

我有一种方法可以在名为fillimages的列表视图中填充图像,这是一项异步任务,我的问题是如果我想刷新我的应用程序,它会等待fillimages完成,然后启动刷新,这是浪费时间和资源,因此,在side fillimages中插入了一个cancel语句,但现在的问题是,当我刷新fillimages cancel时,当我再次调用它时,它将不会运行(因为它读取cancel部分)。你能帮我解决这个问题吗,下面是代码

fillimages fl = new fillimages();
fl.excute();

public class fillimages extends AsyncTask<Void, Void, Void>{

    @Override
    protected Void doInBackground(Void... params) {

        for(int i = 3;i<data.size();i++){

            if(fl.isCancelled()){
                Log.d("debug","fl canceled");
                break;

            }
            try {
                Bitmap bm = BitmapFactory.decodeStream(new URL(data.get(i).getImagelink()).openConnection().getInputStream());
                data.get(i).setBm(bm);

            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return null;
    }
fillimages fl=新的fillimages();
fl.excute();
公共类fillimages扩展异步任务{
@凌驾
受保护的Void doInBackground(Void…参数){

对于(int i=3;iAsyncTasks,一旦取消,就不能重新运行;它们是一次性的,因此必须创建一个新的AsyncTask

顺便说一下,我建议您使用将图像设置为ListView项目