1

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

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

我的第二个项目启动了一个 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);
    }  
4

2 回答 2

2

尝试这样的事情:

class SaveWallpaperAsync extends AsyncTask {

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

}

class SetWallpaperAsync extends AsyncTask {

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

}
于 2013-11-11T19:04:46.107 回答
1

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

于 2013-11-11T18:53:29.007 回答