rokkonet

PC・Androidソフトウェア・アプリの開発・使い方に関するメモ

android開発 AsyncTaskの引数

2021 Jul. 24.
2020 Apr. 25.
2019 Feb. 08.
2019 Jan. 28.

AsyncTaskを継承するSampleAsyncTaskの定義

class SampleAsyncTask extends AsyncTask< Class1, Class2, Class3 > {
    protected Class3 doInBackground(Class1... params) {
            // Class1がVoidでもparamsは必須だが、名称は任意
            // paramsはClass1の配列(Class1[])
            // SampleAsyncTaskのインスタンスでは、execute()の引数にはClass1を必要数与える
            //     execute(instance1OfClass1, instance2OfClass1,instance3OfClass1)
            //     execute()内では、instance1OfClass1, instance2OfClass1,instance3OfClass1はparams[0], params[1], params[2]として参照する

        return instanceOfClass3;
    }

    protected void onProgressUpdate(Class2... values) {

    }

    protected void onPostExecute(Class3 result) {

    }
}

SampleAsyncTaskの実装

sampleTask new SampleAsyncTask();
sampleTask.execute( instance1OfClass1, instance2OfClass1 ... );


AsyncTask定義に記述する3つのジェネリクス型引数について

Class1:doInBackground()、execute()の引数のクラス名

Class1はSampleAsyncTaskインスタンスsampleTaskのexecute()メソッドの引数objectOfClass1のクラス名と一致させる。

doInBackground()メソッド定義の引数冒頭のクラス名はClass1と一致させる。
doInBackground()メソッド定義中のparamsはClass1の配列である。paramsの名称は任意である。

execute()が引数を取らない時はClass1の部分をVoidとする。
class SampleAsyncTask extends AsyncTask {
protected Class3 doInBackground(Void... params) {

Class2:onProgressUpdate()の引数のクラス名

Class2はonProgressUpdate()メソッド定義の引数冒頭のクラス名と一致させる。定義中のvaluesはClass2の配列である。valuesの名称は任意である。
onProgressUpdate()が引数を不要とする時はClass2の部分をVoidとする。
class SampleAsyncTask extends AsyncTask {
protected void onProgressUpdate(Void... values) {

Class3:onPostExecute()の引数のクラス名

Class3はonPostExecute()メソッド定義の引数冒頭のクラス名と一致させる。定義中のresultの名称は任意である。
onPostExecute()が引数を不要とする時はClass3の部分をVoidとする。
class SampleAsyncTask extends AsyncTask {
protected void onPostExecute(Void result) {


Class1のオブジェクト以外にAsyncTaskに渡したいものはコンストラクタで渡す。