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に渡したいものはコンストラクタで渡す。