「アプリケーション起動」及び「アクティビティのサイクル」

Android用語集

カテゴリー: コンポーネント  閲覧数:392 配信日:2013-04-16 10:36


起動


・アプリケーションが起動すると、まず指定されたActivityサブクラスのオブジェクトが、Androidのフレームワークによって生成される


サイクル


・複数の処理を同時に実行できるが、画面の最前面に表示されるアプリケーションは1つだけという決まりがある
・そのため、「作成時」「最前面になったとき」「そうでなくなったとき」「不可視になったとき」など、アプリケーションはさまざまな状態へと変化していく


1.起動 … onCreate()
2.開始 … onStart()
3.アクテイィビティ前面表示 … onResume()
― アクティビティ実行中 ―
4.アクティビティが前面でなくなる … onPause()
5.停止 … onStop()
6.破棄 … onDestroy()


Activityクラスのメソッド


振る舞い/処理フロー概要
・アプリケーション起動や終了、あるいは画面の回転などに応じて、指定されたものが順番に呼び出される






























・上図はあくまでイメージ
・実際に確認する方法の一つとしては、onRestart()、onStart()、onResume()、onPause()メソッドなどをオーバーライドして、System.out.println("onPause()が呼び出された!");などとデバッグ表記すれば良い
・ちなみに、System.out.printlnは、EclipseのLogCatビューに表示される(Android画面には表示されない)
・なお、LogCatビュー利用時には、フィルターを作成して表示行を絞り込むと良い(そうしないと、あらゆるログ出力が表示されるため、目的の表示が埋もれてしまう)
・フィルターを作成するには、LogCatビューにある+アイコンをクリック
・以下、実際にプロセスID(pid)→220でフィルタリングした例
04-02 02:02:30.658: INFO/System.out(220): onStart()が呼び出された!
04-02 02:02:30.658: INFO/System.out(220): onResume()が呼び出された!
04-02 02:02:30.668: DEBUG/ddm-heap(220): Got feature list request
04-02 02:03:27.878: INFO/System.out(220): onPause()が呼び出された!
04-02 02:26:58.227: INFO/System.out(220): onRestart()が呼び出された!
04-02 02:26:58.239: INFO/System.out(220): onStart()が呼び出された!
04-02 02:26:58.239: INFO/System.out(220): onResume()が呼び出された!
04-02 02:27:18.458: INFO/System.out(220): onPause()が呼び出された!
04-02 02:27:24.007: DEBUG/dalvikvm(220): GC freed 597 objects / 51312 bytes in 133ms
04-02 02:27:35.068: INFO/System.out(220): onRestart()が呼び出された!
04-02 02:27:35.068: INFO/System.out(220): onStart()が呼び出された!
04-02 02:27:35.068: INFO/System.out(220): onResume()が呼び出された!
04-02 02:27:43.167: INFO/System.out(220): onPause()が呼び出された!

・自分でエミュレータを触りながら、例えば、「HelloWorld」サンプルプログラムでも表示したり非表示にしたりしてみると、イメージが掴みやすい
・アクティビティがフォアグラウンドに表示される場合は、必ずonStart() → onResume() となることなどが、自分で確認できる


エラーの種類


・参考 
タイプ Log出力方法 ログの意味
V Log.v(TAG, "VERBOSE") 簡易メッセージ
D Log.d(TAG, "DEBUG") デバッグメッセージ
I Log.i(TAG, "INFO") 情報
W Log.w(TAG, "WARNING") 警告
E Log.e(TAG, "ERROR") 致命的エラー