起動処理の流れ1

アプリ ソースコード日記アプリ

処理の流れ

 状態:試行錯誤中  閲覧数:1,571  投稿日:2013-10-16  更新日:2014-01-20
1.ActivityTopクラス
・onCreateメソッド → RecordItemクラスのインスタンスオブジェクトを生成
・onResumeメソッド → DataLoadTaskクラスのインスタンスオブジェクトを生成

2.DataLoadTaskクラス
・doInBackgroundメソッド → RecordDaoItemクラスのインスタンスオブジェクトを生成。同クラスのlist_search_itemメソッド実行
・onPostExecuteメソッド →

3.RecordDaoItemクラス
・RecordDaoItemコンストラクタ → DatabaseOpenHelperItemクラスのインスタンスオブジェクトを生成
・list_search_itemメソッド … 「ユーザー定義クラスRecordItemのオブジェクト」を格納するリストitemListを生成し、返す

4.DatabaseOpenHelperItemクラス


・概要超簡略化



1.ActivityTopクラス

 閲覧数:433 投稿日:2013-10-16 更新日:2014-01-22

インポート


▼/DbDiary/src/android/style/system/ActivityTop.java



プロパティ





onCreate()


RecordItemクラスのインスタンスオブジェクトを生成
・アクティビティへビューを追加。予めXMLファイルで作成している配置ビュー読込、表示領域を確保
・この時点でのデータは空

・Stringクラスで用意されているvalueOfメソッドを使って文字列に変換
※valueOfメソッドは引数に指定された値の文字列表現を返す
→RecordItemクラスのプライベートプロパティ「itemsearchnen」「itemsearchtuki」へ、セッターを通じてデータ格納


onResume()


DataLoadTaskクラスのインスタンスオブジェクトを生成
・DataLoadTaskクラス呼出、実行


DataLoadTaskクラスの概要

 閲覧数:479 投稿日:2013-11-04 更新日:2014-01-23

概要


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を継承したクラスの作成時に指定可能


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

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

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


2.DataLoadTaskクラス … メソッド

 閲覧数:544 投稿日:2013-11-07 更新日:2014-01-23

onPreExecute()


タスク開始直後に呼ばれる
・何か初期化したいことがあればここへ記述
・ここではプログレスダイアログを初期化して表示



doInBackground()


バックグラウンドで実行させたい処理
・インナークラス内にて、「RecordDaoItemクラスのインスタンスオブジェクト」を生成し、その際引数として「DataLoadTaskクラスのインスタンスオブジェクト」を渡す


インナークラスは、「.」でつないで表記
・ActivityTopクラスの中に新しくDataLoadTaskクラスを定義しているため、DataLoadTaskはActivityTopクラスのインナークラス
・そのため、DataLoadTaskクラスは、ActivityTop.DataLoadTask と「.」でつないで表記

「引数の数」はクラスに依存
・最後の行は、自分自身をパラメータとして「クラス名」のオブジェクトを生成しているため、「引数の数」はそのクラスによる
・具体的には、RecordDaoItemに依存
・下記コンストラクタにより、「引数の数」は1

※引数リストの一般的な形式 … 型 変数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クラス呼出



doInBackground() → 3.RecordDaoItemクラス

 閲覧数:555 投稿日:2013-12-15 更新日:2014-01-24

コンストラクタ


RecordDaoItemクラスのコンストラクタへ引数を渡す
・ここでは、DataLoadTaskクラスのインスタンスオブジェクトが渡される

▼/src/android/style/systemdb/RecordDaoItem.java
・RecordDaoItemクラスのコンストラクタは、「DataLoadTaskクラスのインスタンスオブジェクト」を受け取る


・RecordDaoItemクラスのコンストラクタは、受け取った「DataLoadTaskクラスのインスタンスオブジェクト」を引数として、新たに「DatabaseOpenHelperItem」クラスのインスタンスオブジェクトを生成


doInBackground() → 3.RecordDaoItemクラス → 4.DatabaseOpenHelperItemクラス

 閲覧数:495 投稿日:2013-12-27 更新日:2014-01-24
・初回アクセス(データベース作成)した時だけonCreateメソッドが呼ばれ、テーブル作成



方針変換 … 1から作成

起動処理の流れ2



マウスで矢印を一番右までスライドさせると、ゲストコメント投稿できるよー

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