カテゴリー:
日記アプリ
閲覧数:522 配信日:2013-11-07 20:30
onPreExecute()
タスク開始直後に呼ばれる
・何か初期化したいことがあればここへ記述
・ここではプログレスダイアログを初期化して表示
// タスク開始直後に呼ばれる
// 何か初期化したいことがあればここへ記述
// ここではプログレスダイアログを初期化して表示
@Override
protected void onPreExecute() {
// 処理中ダイアログ表示
progressDialog = new ProgressDialog(ActivityTop.this);
progressDialog.setMessage(getResources().getText(R.string.loading));
progressDialog.setIndeterminate(true);
progressDialog.show();
}
doInBackground()
バックグラウンドで実行させたい処理
・インナークラス内にて、「RecordDaoItemクラスのインスタンスオブジェクト」を生成し、その際引数として「DataLoadTaskクラスのインスタンスオブジェクト」を渡す
//バックグラウンドで実行させたい処理
@Override
protected List<RecordItem> doInBackground(Object... params) {
// 一覧を呼び出し
RecordDaoItem dao = new RecordDaoItem(ActivityTop.this);
インナークラスは、「.」でつないで表記
・ActivityTopクラスの中に新しくDataLoadTaskクラスを定義しているため、DataLoadTaskはActivityTopクラスのインナークラス
・そのため、DataLoadTaskクラスは、ActivityTop.DataLoadTask と「.」でつないで表記
「引数の数」はクラスに依存
・最後の行は、自分自身をパラメータとして「クラス名」のオブジェクトを生成しているため、「引数の数」はそのクラスによる
・具体的には、RecordDaoItemに依存
・下記コンストラクタにより、「引数の数」は1
/**
* データアクセスクラス
*/
public class RecordDaoItem {
private DatabaseOpenHelperItem helper = null;
public RecordDaoItem(Context context) {
※引数リストの一般的な形式 … 型 変数1, 型 変数2,
このときのActivityTop.thisとは?
・「ActivityTop.DataLoadTaskクラス」のオブジェクト自身を意味する
・オブジェクト自身とは、例えば「tmp = new ActivityTop.DataLoadTask();」とした場合は tmp に該当
・ここでは「ActivityTop」クラスのインナークラス「DataLoadTask」にて「RecordDaoItem dao = new RecordDaoItem(ActivityTop.this);」しているので、「DataLoadTask」クラスのインスタンスオベジェクトとなる
「ActivityTop.this」ではなく、単なる「this」だと、どうなる?
エラー発生
コンストラクター RecordDaoItem(ActivityTop.DataLoadTask) は未定義です
・DataLoadTaskの中では、thisはクラスオブジェクト自身を指す・一方、「new RecordDaoItem」引数には、「Context context」つまり Activityを継承したActivityTopクラスのオブジェクトを指定する必要がある
・つまり、インナークラス内から「外部クラスのthis」を参照したい
・そのためには、「外部クラス名 + .this」と表記することが絶対条件となる
※DataLoadTaskクラスは、外側のActivityTopクラスのインスタンスに内側からアクセスしている
RecordDaoItemクラス呼出
import android.style.systemdb.RecordItem;
import android.style.systemdb.RecordDaoItem;
// 一覧データの取得と表示を行うタスク
public class DataLoadTask extends AsyncTask<Object, Integer, List<RecordItem>> {
private ProgressDialog progressDialog = null;
// バックグラウンドで実行させたい処理
@Override
protected List<RecordItem> doInBackground(Object... params) {
// 一覧を呼び出し
RecordDaoItem dao = new RecordDaoItem(ActivityTop.this);