Android Hacks - 合宿 Activity

2,339 views
2,274 views

Published on

「Android Hacks ―プロが教えるテクニック & ツール」(株式会社ブリリアントサービス 著)を教材とした勉強会でのまとめ資料です。

http://www.oreilly.co.jp/books/9784873114569/

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,339
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Android Hacks - 合宿 Activity

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

×