狠狠撸

狠狠撸Share a Scribd company logo
ANDROID HACKS # 合宿編  ACTIVITY 再勉強 担当:かわらたん Twitter : @pfkawara Blog : http://kawara-tan.blogspot.com/ 09/19/11
この資料について この資料は下記の出典元をベースに勉強会で作成した資料です。 『 Android Hacks 』(株式会社ブリリアントサービス著、オライリー?ジャパン刊) この本の紹介ページが下記にあります。 http://www.oreilly.co.jp/books/9784873114569/ 09/19/11
アジェンダ #6 Activity 入門 (p.41 ~ p.58) ベース  + Android Developers アクティビティとは アクティビティのライフサイクル 状態を保存、復元する 09/19/11
1.  アクティビティとは 09/19/11
1.  アクティビティとは 画面を持った機能の単位 機能を Java で実装。画面構成 ( レイアウト ) は xml ファイルに記述 1 画面  : 1Activity Android 3.0 では fragment を用いると、 n 画面: 1Activity http://developer.android.com/intl/ja/sdk/android-3.0.html アプリケーションは複数の Activity から構成される AndroidManifest.xml で使用する Activity を宣言 アプリを起動した時に呼ばれる Activity -> ”Main Activity” 09/19/11
1.  アクティビティとは MainActivity 09/19/11 Activity クラスを継承 Activity が作られる時に呼ばれるメソッド ( 後述 ) この Activity の紐付くレイアウトを指定 ( 後述 )
1.  アクティビティとは レイアウトファイル layout フォルダにある xml ファイル 09/19/11 文字列を画面に表示するコンポーネント 縦一列または横一列にコンポーネントを並べるレイアウト strings.xml の hello を参照 ( 後述 ) fill_parent :  親のビューとできるだけ同じ大きさまで広がる wrap_content :  コンポーネント自身が最低限必要な大きさまで広がる
Activity とレイアウトファイルの紐付け 1.  アクティビティとは 09/19/11 Layout フォルダに xml ファイルを置いてビルドすると、自動で R.java に参照先 ID が追加される Activity と紐づくレイアウトの ID を指定
Strings.xml の値参照 1.  アクティビティとは 09/19/11 strings.xml に値を追加してビルドすると、自動で R.java に参照先 ID が追加される 参照する値の ID を指定
2. Activity のライフサイクル 09/19/11
2. Activity のライフサイクル アクティビティには人の一生と同じように、起動から終了までのライフサイクルが存在します。 動いている Activity は基本 1 個 新しい Activity が作られると、前に動いていた Activity はスタックに積まれる (Back Stack) 状態変化に応じて処理を記述できるように、 onStart() などの各メソッドが用意されている。 09/19/11 http://developer.android.com/intl/ja/guide/topics/fundamentals/activities.html
2. Activity のライフサイクル 3 種類の生存期間 09/19/11 http://developer.android.com/intl/ja/guide/topics/fundamentals/activities.html The entire lifetime とある 1Activity 全体の生存期間 The visible lifetime 目に見えているけど入力や操作ができない期間 The foreground lifetime 入力や操作ができる期間
各メソッド 2. Activity のライフサイクル onResume() Activity がユーザの入力を受け付けるようになる時に呼び出される。この時点で Activity は Stack の一番上。 次のメソッド: onPause() 09/19/11 http://developer.android.com/intl/ja/guide/topics/fundamentals/activities.html onStart() Activity が表示される直前に呼び出される。 次のメソッド:フォアグラウンドになる場合は onResume()           hidden の場合は onPause() onCreate() Activity が生成される時に呼ばれる。 この Activity 全体に関わるセットアップをここで行う。 onSaveInstanceState()( 後述 ) で保存された情報がある場合は、引数の  Bundle  にその情報が渡される。 次のメソッド: onStart()
各メソッド ( これらメソッド 3 種は return した後にプロセスが kill される可能性がある。 ) 2. Activity のライフサイクル onPause() Activity がバックグラウンドになる直前に呼ばれる。データの保存、アニメーションの停止などを行う。 次のメソッド:フォアグラウンドに戻れるなら onResume()         ユーザから目に見えなくなったら onStop() 09/19/11 http://developer.android.com/intl/ja/guide/topics/fundamentals/activities.html onStop() Activity がしばらく使われなくなった時に呼ばれる ( 他の Activity が起動してバックグラウンドになった時や、アプリが終了する直前 ) 次のメソッド:フォアグラウンドに戻れるなら onRestart()          そうでないなら onDestroy() onCreate() Activity が破棄されると直前に呼ばれる。 次のメソッド:無い ( `? ω ? ?)
その他のメソッド 2. Activity のライフサイクル 09/19/11 http://developer.android.com/intl/ja/guide/topics/fundamentals/activities.html onRestart() onStop() が呼ばれた後に、他の Activity が終了する等で、再び Activity が表示される時に呼び出される。 次のメソッド: onStart() onSaveInstanceState(Bundle)( 後述 ) インスタンスの状態を保存すべきタイミング (onPause() または onStop() の直前 ) で呼ばれる。引数の Bundle に対して putString() で値を保存する。 次のメソッド: onPause() または onStop() onRestoreInstanceState(Bundle)( 後述 ) インスタンスの状態を復元すべきタイミング () で呼ばれる。引数の Bundle に対して getXXX(key) で値を取得する。 次のメソッド: onPause() または onStop() onSaveInstanceState(Bundle)( 後述 ) インスタンスの状態を保存すべきタイミング (onPause() または onStop() の直前 ) で呼ばれる。引数の Bundle に対して putXXX(key, value) で値を保存する。 次のメソッド: onPause() または onStop()
その他のメソッド 他にもある ( はず ) 2. Activity のライフサイクル 09/19/11 http://developer.android.com/intl/ja/guide/topics/fundamentals/activities.html
別 Activity へのデータの引き継ぎ AActivity が startActivity() で BActivity を呼んだ時、以下のメソッドの順で呼ばれる。 2. Activity のライフサイクル 09/19/11 http://developer.android.com/intl/ja/guide/topics/fundamentals/activities.html AActivity onPause() BActivity onCreate() onStart() onResume() onStop() データはここで (DB やファイルに ) 保存
3.  状態を保存、復元する 09/19/11
3.  状態を保存、復元する Activity( 画面 ) の状態を保存、復元する 例:ユーザが選択した画像 ユーザがテキストボックスに入力した文字列や、チェックボックスの ON/OFF などはシステムが保存、復元してくれる onSaveInstanceState(Bundle) 状態を保存する処理を実装… Bundle#putXXX(key,value) onRestoreInstanceState(Bundle) 状態を復元する処理を実装… Bundle#getXXX(key) あくまで UI に関する状態保持のみに使う 09/19/11 http://developer.android.com/intl/ja/guide/topics/fundamentals/activities.html
3.  状態を保存、復元する Activity( 画面 ) の状態を保存、復元する 09/19/11
参考 URL Android Developers http://developer.android.com/intl/ja/index.html 09/19/11

More Related Content

Android Hacks - 合宿 Activity

  • 1. ANDROID HACKS # 合宿編 ACTIVITY 再勉強 担当:かわらたん Twitter : @pfkawara Blog : http://kawara-tan.blogspot.com/ 09/19/11
  • 2. この資料について この資料は下記の出典元をベースに勉強会で作成した資料です。 『 Android Hacks 』(株式会社ブリリアントサービス著、オライリー?ジャパン刊) この本の紹介ページが下記にあります。 http://www.oreilly.co.jp/books/9784873114569/ 09/19/11
  • 3. アジェンダ #6 Activity 入門 (p.41 ~ p.58) ベース + Android Developers アクティビティとは アクティビティのライフサイクル 状態を保存、復元する 09/19/11
  • 5. 1. アクティビティとは 画面を持った機能の単位 機能を Java で実装。画面構成 ( レイアウト ) は xml ファイルに記述 1 画面 : 1Activity Android 3.0 では fragment を用いると、 n 画面: 1Activity http://developer.android.com/intl/ja/sdk/android-3.0.html アプリケーションは複数の Activity から構成される AndroidManifest.xml で使用する Activity を宣言 アプリを起動した時に呼ばれる Activity -> ”Main Activity” 09/19/11
  • 6. 1. アクティビティとは MainActivity 09/19/11 Activity クラスを継承 Activity が作られる時に呼ばれるメソッド ( 後述 ) この Activity の紐付くレイアウトを指定 ( 後述 )
  • 7. 1. アクティビティとは レイアウトファイル layout フォルダにある xml ファイル 09/19/11 文字列を画面に表示するコンポーネント 縦一列または横一列にコンポーネントを並べるレイアウト strings.xml の hello を参照 ( 後述 ) fill_parent : 親のビューとできるだけ同じ大きさまで広がる wrap_content : コンポーネント自身が最低限必要な大きさまで広がる
  • 8. Activity とレイアウトファイルの紐付け 1. アクティビティとは 09/19/11 Layout フォルダに xml ファイルを置いてビルドすると、自動で R.java に参照先 ID が追加される Activity と紐づくレイアウトの ID を指定
  • 9. Strings.xml の値参照 1. アクティビティとは 09/19/11 strings.xml に値を追加してビルドすると、自動で R.java に参照先 ID が追加される 参照する値の ID を指定
  • 11. 2. Activity のライフサイクル アクティビティには人の一生と同じように、起動から終了までのライフサイクルが存在します。 動いている Activity は基本 1 個 新しい Activity が作られると、前に動いていた Activity はスタックに積まれる (Back Stack) 状態変化に応じて処理を記述できるように、 onStart() などの各メソッドが用意されている。 09/19/11 http://developer.android.com/intl/ja/guide/topics/fundamentals/activities.html
  • 12. 2. Activity のライフサイクル 3 種類の生存期間 09/19/11 http://developer.android.com/intl/ja/guide/topics/fundamentals/activities.html The entire lifetime とある 1Activity 全体の生存期間 The visible lifetime 目に見えているけど入力や操作ができない期間 The foreground lifetime 入力や操作ができる期間
  • 13. 各メソッド 2. Activity のライフサイクル onResume() Activity がユーザの入力を受け付けるようになる時に呼び出される。この時点で Activity は Stack の一番上。 次のメソッド: onPause() 09/19/11 http://developer.android.com/intl/ja/guide/topics/fundamentals/activities.html onStart() Activity が表示される直前に呼び出される。 次のメソッド:フォアグラウンドになる場合は onResume()           hidden の場合は onPause() onCreate() Activity が生成される時に呼ばれる。 この Activity 全体に関わるセットアップをここで行う。 onSaveInstanceState()( 後述 ) で保存された情報がある場合は、引数の Bundle にその情報が渡される。 次のメソッド: onStart()
  • 14. 各メソッド ( これらメソッド 3 種は return した後にプロセスが kill される可能性がある。 ) 2. Activity のライフサイクル onPause() Activity がバックグラウンドになる直前に呼ばれる。データの保存、アニメーションの停止などを行う。 次のメソッド:フォアグラウンドに戻れるなら onResume()         ユーザから目に見えなくなったら onStop() 09/19/11 http://developer.android.com/intl/ja/guide/topics/fundamentals/activities.html onStop() Activity がしばらく使われなくなった時に呼ばれる ( 他の Activity が起動してバックグラウンドになった時や、アプリが終了する直前 ) 次のメソッド:フォアグラウンドに戻れるなら onRestart()          そうでないなら onDestroy() onCreate() Activity が破棄されると直前に呼ばれる。 次のメソッド:無い ( `? ω ? ?)
  • 15. その他のメソッド 2. Activity のライフサイクル 09/19/11 http://developer.android.com/intl/ja/guide/topics/fundamentals/activities.html onRestart() onStop() が呼ばれた後に、他の Activity が終了する等で、再び Activity が表示される時に呼び出される。 次のメソッド: onStart() onSaveInstanceState(Bundle)( 後述 ) インスタンスの状態を保存すべきタイミング (onPause() または onStop() の直前 ) で呼ばれる。引数の Bundle に対して putString() で値を保存する。 次のメソッド: onPause() または onStop() onRestoreInstanceState(Bundle)( 後述 ) インスタンスの状態を復元すべきタイミング () で呼ばれる。引数の Bundle に対して getXXX(key) で値を取得する。 次のメソッド: onPause() または onStop() onSaveInstanceState(Bundle)( 後述 ) インスタンスの状態を保存すべきタイミング (onPause() または onStop() の直前 ) で呼ばれる。引数の Bundle に対して putXXX(key, value) で値を保存する。 次のメソッド: onPause() または onStop()
  • 16. その他のメソッド 他にもある ( はず ) 2. Activity のライフサイクル 09/19/11 http://developer.android.com/intl/ja/guide/topics/fundamentals/activities.html
  • 17. 別 Activity へのデータの引き継ぎ AActivity が startActivity() で BActivity を呼んだ時、以下のメソッドの順で呼ばれる。 2. Activity のライフサイクル 09/19/11 http://developer.android.com/intl/ja/guide/topics/fundamentals/activities.html AActivity onPause() BActivity onCreate() onStart() onResume() onStop() データはここで (DB やファイルに ) 保存
  • 19. 3. 状態を保存、復元する Activity( 画面 ) の状態を保存、復元する 例:ユーザが選択した画像 ユーザがテキストボックスに入力した文字列や、チェックボックスの ON/OFF などはシステムが保存、復元してくれる onSaveInstanceState(Bundle) 状態を保存する処理を実装… Bundle#putXXX(key,value) onRestoreInstanceState(Bundle) 状態を復元する処理を実装… Bundle#getXXX(key) あくまで UI に関する状態保持のみに使う 09/19/11 http://developer.android.com/intl/ja/guide/topics/fundamentals/activities.html
  • 20. 3. 状態を保存、復元する Activity( 画面 ) の状態を保存、復元する 09/19/11
  • 21. 参考 URL Android Developers http://developer.android.com/intl/ja/index.html 09/19/11