奇怪的AsyncTask行为

时间:2013-11-11 18:48:53

标签: android android-asynctask

我已在操作栏上成功设置了2个项目,以打开2个单独的异步任务,以在后台执行不同的任务。

我的第一个项目启动了一个AsyncTask类,它只下载图像并将它们保存到SD卡。

My Second item启动AsyncTask类,下载图像,然后将其设置为用户壁纸。

我遇到的问题是,当按下第二个项目(Setwallpaper)时,它将同时执行由2个类别分隔的2个任务(保存并设置用户壁纸)。

然后,当我删除其他启动代码(setwallpaper /反之亦然)时,它将执行一项任务,而不是同时执行两项任务。

我不知道为什么这样做会有人帮助我。感谢...

代码:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    // TODO Add your menu entries here
    super.onCreateOptionsMenu(menu, inflater);
    inflater.inflate(R.menu.test, menu);

}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {

    case R.id.SaveWallpaper:

        new SaveWallpaperAsync(getActivity()).execute(mImageUrl);

        return true;



    case R.id.SetWallpaper:

        new SetWallpaperAsync(getActivity()).execute(mImageUrl);

        return true;
    }
    return super.onOptionsItemSelected(item);
    }  

2 个答案:

答案 0 :(得分:2)

尝试这样的事情:

class SaveWallpaperAsync extends AsyncTask {

    doInBackground(...) {
        image = Utils.downloadImage(...);
        Utils.saveToSdCard(image);
    }

}

class SetWallpaperAsync extends AsyncTask {

    doInBackground(...) {
        image = Utils.downloadImage(...);
        Utils.setBackground(image);
    }

}

答案 1 :(得分:1)

案例之间没有中断:)虽然返回应该做同样的想法,你应该尝试在返回后使用break