カテゴリー:
日記アプリ
閲覧数: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;