アクティビティ(ライフサイクル) ==================================================================== ■ 1. Activity01 アクティビティのライフサイクルを確認する。 画面表示は、プロジェクト作成時のデフォルトのままでよい。 Activityオブジェクトは、Androidアプリの画面をあらわすオブジェクト。 したがって、画面を制御するためのクラスは、Activityクラスを継承して作る。 Avtivityオブジェクトのライフサイクルは、以下のURLの図を参照。 file:///C:/Program%20Files/Android/android-sdk/docs/images/activity_lifecycle.png (注: インストーラーを使い、デフォルトの箇所にインストールした場合) または http://developer.android.com/images/activity_lifecycle.png 上記の書かれている代表的なライフサイクルのメソッド(コールバック・メソッド)は以 下のとおり。これらのメソッドをオーバーライドする。 onCreate() アクティビティが最初に起動されるときに呼ばれる onStart() アクティビティが表示される直前に呼ばれる OnResume() アクティビティがユーザーとやり取りする直前に呼ばれる onPause() アクティビティがバックグランドに隠れる直前(他のアクティビティが起動、 たとえば、着信があった、電話をかける)に呼ばれる このメソッドが実行された後は、他のアプリがメモリーを必要としている ときに、onStop()やonDestroy()が呼び出されることなく、アクティビティ が破棄されることがあるので、必要なデータは保存しておく onStop() アクティビティが不要になったとき(アクティビティがしばらく使われない、 「ホーム」、「戻る」ボタン押下)に呼ばれる 場合によっては呼ばれないこともある onRestart() 終了状態だったアクティビティが再び表示されるときに呼ばれる onDestroy() アクティビティが破棄される直前(画面縦横の向きを変えたときも)に呼 ばれる 場合によっては呼ばれないこともある □ Activity01Activity --- package jp.marunomaruno.android.sample; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class Activity01Activity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(getString(R.string.app_name), "onCreate()"); // (1) setContentView(R.layout.main); } @Override protected void onDestroy() { super.onDestroy(); Log.d(getString(R.string.app_name), "onDestroy()"); } @Override protected void onPause() { super.onPause(); Log.d(getString(R.string.app_name), "onPause()"); } @Override protected void onRestart() { super.onRestart(); Log.d(getString(R.string.app_name), "onRestart()"); } @Override protected void onResume() { super.onResume(); Log.d(getString(R.string.app_name), "onResume()"); } @Override protected void onStart() { super.onStart(); Log.d(getString(R.string.app_name), "onStart()"); } @Override protected void onStop() { super.onStop(); Log.d(getString(R.string.app_name), "onStop()"); } } --- (1) ログの出力 Logクラスの次のメソッドを利用する。 static int d(String tag, String msg) static int d(String tag, String msg, Throwable tr) これ以外にも、次のメソッドがある。 static int e(String tag, String msg) static int e(String tag, String msg, Throwable tr) static int i(String tag, String msg) static int i(String tag, String msg, Throwable tr) static int v(String tag, String msg) static int v(String tag, String msg, Throwable tr) static int w(String tag, String msg) static int w(String tag, String msg, Throwable tr) ログの種類によって使うメソッドを分けることができる。 メソッド 定数 意味 -------- ------- -------- d() DEBUG デバック e() ERROR エラー i() INFO 情報 v() VERBOSE 詳細 w() WARN 警告 いずれにしても、第1引数は、LogCatで見るときのタグになる。このタグを使ってフィル ターをかけることも可能。 また、ログの種類で、フィルターをかけることもできる。 ■ Eclipseでのログの確認 □ Eclipseで、LogCatビューを表示する [Windows] - [Show View ...] - [Other] - [Android] - [LogCat] LogCatビューで、「+」(Create Filter)をクリックすると、つぎのLog Filterの設定画 面が出るので、フィルターする値を設定する。 Log Filter --- Filter Name: Activity01 by Log Tag: Activity01 by pid: (そのまま) by Log level (そのまま) --- □ LogCat の結果例 --- 07-01 07:53:46.252: DEBUG/Activity01(6661): onCreate() 起動 07-01 07:53:46.372: DEBUG/Activity01(6661): onStart() 07-01 07:53:46.372: DEBUG/Activity01(6661): onResume() 07-01 07:54:19.442: DEBUG/Activity01(6661): onPause() 画面縦横替え 07-01 07:54:19.442: DEBUG/Activity01(6661): onStop() 07-01 07:54:19.442: DEBUG/Activity01(6661): onDestroy() 07-01 07:54:19.602: DEBUG/Activity01(6661): onCreate() 07-01 07:54:19.872: DEBUG/Activity01(6661): onStart() 07-01 07:54:19.892: DEBUG/Activity01(6661): onResume() 07-01 07:54:47.122: DEBUG/Activity01(6661): onPause() 戻るボタン 07-01 07:54:47.332: DEBUG/Activity01(6661): onStop() 07-01 07:54:47.342: DEBUG/Activity01(6661): onDestroy() 07-01 07:55:19.592: DEBUG/Activity01(6661): onCreate() Activity01アイコン 07-01 07:55:19.662: DEBUG/Activity01(6661): onStart() 07-01 07:55:19.662: DEBUG/Activity01(6661): onResume() 07-01 07:56:09.312: DEBUG/Activity01(6661): onPause() ホーム 07-01 07:56:09.492: DEBUG/Activity01(6661): onStop() 07-01 07:56:36.392: DEBUG/Activity01(6661): onRestart() Activity01アイコン 07-01 07:56:36.392: DEBUG/Activity01(6661): onStart() 07-01 07:56:36.392: DEBUG/Activity01(6661): onResume() 07-01 07:57:16.402: DEBUG/Activity01(6661): onPause() 電源OFF 07-01 07:57:16.792: DEBUG/Activity01(6661): onStop() 07-01 07:57:16.792: DEBUG/Activity01(6661): onDestroy() 07-01 07:57:16.842: DEBUG/Activity01(6661): onCreate() 07-01 07:57:16.992: DEBUG/Activity01(6661): onStart() 07-01 07:57:17.022: DEBUG/Activity01(6661): onResume() 07-01 07:57:17.222: DEBUG/Activity01(6661): onPause() 07-01 07:57:47.832: DEBUG/Activity01(6661): onResume() 電源ON 07-01 07:58:25.342: DEBUG/Activity01(6661): onPause() 認証 07-01 07:58:25.342: DEBUG/Activity01(6661): onStop() 07-01 07:58:25.342: DEBUG/Activity01(6661): onDestroy() 07-01 07:58:25.352: DEBUG/Activity01(6661): onCreate() 07-01 07:58:25.462: DEBUG/Activity01(6661): onStart() 07-01 07:58:25.472: DEBUG/Activity01(6661): onResume() 07-01 07:59:08.322: DEBUG/Activity01(6661): onPause() ホーム 07-01 07:59:08.562: DEBUG/Activity01(6661): onStop() --- ■ コマンドによるログの確認 adbコマンドを使う。 --- adb logcat [-s タグ] --- 今回のパターンなら、 --- adb logcat -s Activity01 --- で、Activity01アプリからの出力だけに絞られる。 ■ アクティビティの終了 Activityクラスのfinish()メソッドを使う。 これは、現在のアクティビティを終了し、前のアクティビティに戻る。 動きとしては、戻るボタンのクリックと同じ。 ■ アプリケーションの終了 ActivityクラスのmoveTaskToBack()メソッドを使う。 現在のアプリケーションを中断する。 動きとしては、ホームボタンのクリックと同じ。
最新の画像[もっと見る]
-
あけましておめでとうございます 12年前
-
今年もよろしくお願いいたします 13年前
-
あけましておめでとうございます 14年前
-
あけましておめでとうございます 17年前
※コメント投稿者のブログIDはブログ作成者のみに通知されます