1

バックグラウンドで異なるタスクを実行するために、アクション バーに 2 つの項目を設定して、2 つの別々の非同期タスクを開くことができました。

最初の項目は、画像をダウンロードして SD カードに保存するだけの AsyncTask クラスを起動します。

2 番目の項目は、画像をダウンロードしてユーザーの壁紙として設定する AsyncTask クラスを起動します。

私が抱えている問題は、2 番目の項目を押すと (Setwallpaper)、2 つのクラス (ユーザーの壁紙を保存して設定する) で区切られた 2 つのタスクを同時に実行することです。

次に、他の起動コード (setwallpaper/その逆) を削除すると、同時に 2 つではなく、1 つのタスクが実行されます。

なぜこれがこのように振る舞うのかわかりません。誰かが私を助けてくれますか。ありがとう...

コード:

@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

1

ケース間に休憩はありません:) return は同じことを考えるべきですが、return 後に break を使用してみてください。

于 2013-11-11T18:53:29.007 に答える