4

ここ数ヶ月で気づいたことがあります。ボタンに clickListener を設定して AsyncTask を実行すると、常に実行されるとは限りません。この問題を解決するには、AsyncTask を実行するコード行をメソッドでラップします。

常に機能しないコードは次のとおりです。

button.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            new CustomAsyncTask().execute();
        }
    });

これが私の修正です:

button.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            executeAsyncTask();
        }
    });

public void executeAsyncTask(){
    new CustomAsyncTask().execute();
}

いつ壊れて壊れないかというパターンに気づいていませんが、他の誰かがこれに気づいたのではないかと思いますか?

また、なぜこれが起こるのかについて誰かが説明を持っていれば、それもクールです.

前もって感謝します。

編集

これがCustomAsyncTaskです(何も出力しないため、常に呼び出されているわけではありません)

private class CustomAsyncTask extends AsyncTask<Void, Void, Void>{

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

        Log.i("CustomAsyncTask", "doInBackground");

        return null;
    }
}
4

0 に答える 0