DataLoadTaskクラスの概要

Android開発に関するメモランダム

カテゴリー: 日記アプリ  閲覧数:453 配信日:2013-11-04 10:57


概要


ActivityTopクラスのネストクラス
▼/DbDiary/src/android/style/system/ActivityTop.java

AsyncTaskクラスを継承してバックグラウンド処理
・データベースへアクセスする際、利用
・具体的には、バックグラウンドで一覧データの取得と表示を行う
・仕組みとしては、AsyncTaskを継承して非同期に動作を行う
比較的重たい処理となる「データベース問い合わせ、一覧データ取得・表示」は、メインスレッド(UI thread)に負荷を与えずに行うため、AsyncTaskクラスを継承した「DataLoadTask」クラスで実施


実型引数


クラス宣言時のGenerics実型第1引数
・execute()メソッド引数からdoInBackgroundメソッド引数()へ渡す型を指定
・ここでは「task.execute()」で渡されていないので関係ない
・具体的には、execute()を引数なしで呼んでいるため、doInBackground()には引数が渡らない
・つまり、params.lengthは0

クラス宣言時のGenerics実型第3引数
・処理結果の型
・具体的にはdoInBackgroundの返り値
・ここでは「List<RecordItem>」型を指定(=java.util.List<android.style.systemdb.RecordItem>;)

可変長引数
可変長引数が「nullの場合」と「なかった場合」で条件分け
メソッド(Object... params)
execute()およびdoInBackground()の引数の型を、AsyncTaskを継承したクラスの作成時に指定可能
	/**
* 一覧データの取得と表示を行うタスク
*/
public class DataLoadTask extends AsyncTask<Object, Integer, List<RecordItem>> {
// <java.lang.Object,java.lang.Integer,java.util.List<android.style.systemdb.RecordItem>

/*バックグラウンドで実行させたい処理*/
@Override
protected List<RecordItem> doInBackground(Object... params) {

           /* 一覧を呼び出し */
RecordDaoItem dao = new RecordDaoItem(ActivityTop.this);

return dao.list_search_item( Record ,isWordSearch ); // 第1引数はRecordItemクラスインスタンス。初回は初期化されたRecordの日付データ。第2引数の初回はfalse
}

}


Generics実型第3引数で指定したList<RecordItem>とは何か?
・引数として渡されていないのに指定できる理由は、「import android.style.systemdb.RecordItem;」
・その実体はレコード情報クラス
・つまり、List<RecordItem>は、その要素が全てRecordItemクラス型である(RecordItemクラスのインスタンス、RecordItemサブクラスのインスタンス、null)ことが保証されているList

Generics実型第3引数で、「List<RecordItem>」を指定できる理由
・Listインターフェイスインポート
import java.util.List;

・RecordItemインポート
※ユーザ定義クラスのため、「ユーザ作成パッケージ名」を付与
import android.style.systemdb.RecordItem;


週間人気ページランキング / 2-16 → 2-22
順位 ページタイトル抜粋 アクセス数
アクセスが、ありませんでした! 0
2025/2/23 1:01 更新
指定期間人気ページランキング / 1970-1-1 → 2025-2-22
順位 ページタイトル抜粋 アクセス数
アクセスが、ありませんでした! 0
2025/2/23 1:01 更新