android AsyncTaskの使い方

あまりちゃんと理解してこなかったので自分なりに使い方理解するためのサンプルコードをメモしておく

結果

D/: ##### onPreExecute
D/: ##### doInBackground value1 value2
D/: ##### onProgressUpdate 1秒後に呼ばれる
D/: ##### onProgressUpdate 2秒後に呼ばれる
D/: ##### onProgressUpdate 3秒後に呼ばれる
D/: ##### onPostExecute 結果 value1:value2

ソース

package xxx.yyy.zzz

import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MyTask task = new MyTask();
        task.execute("value1", "value2");
    }

    // パラメータ1 : doInBackgroundに渡す
    // パラメータ2 : onProgressUpdateに渡す
    // パラメータ3 : onPostExecuteに渡す
    class MyTask extends AsyncTask<String, Integer, String> {

        @Override
        // 最初に呼ばれる(任意)
        protected void onPreExecute() {
            Log.d("","##### onPreExecute");
        }

        @Override
        // onPreExecuteの後に呼ばれる(必須)
        protected String doInBackground(String... argv) {
            Log.d("",String.format("##### doInBackground %s %s", argv[0], argv[1]));
            try {
                Thread.sleep(1000);
                publishProgress(1);
                Thread.sleep(1000);
                publishProgress(2);
                Thread.sleep(1000);
                publishProgress(3);
                // cancel(true);
            } catch (InterruptedException e) {
            }
            return argv[0] + ":" + argv[1];
        }

        @Override
        // publishProgressで呼ばれる(任意)
        protected void onProgressUpdate(Integer... progress) {
            Log.d("", String.format("##### onProgressUpdate %d秒後に呼ばれる", progress[0]));
        }

        @Override
        // doInBackgroundが完了したら呼ばれる(任意)
        protected void onPostExecute(String result) {
            Log.d("", String.format("##### onPostExecute 結果 %s", result));
        }

        @Override
        // cancelで呼ばれる(任意)
        protected void onCancelled() {
            Log.d("","##### onCancelled");
        }

    }
}

以上