SlideShare 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

What's hot (13)

Android デバッグ小ネタ
Android デバッグ小ネタAndroid デバッグ小ネタ
Android デバッグ小ネタ
l_b__
 
日報を支える技術
日報を支える技術日報を支える技術
日報を支える技術
Takashi Masuda
 
多段LXC構成でOpenStackを構築 - LT@コンテナ型仮想化情報交換会LT
多段LXC構成でOpenStackを構築 - LT@コンテナ型仮想化情報交換会LT多段LXC構成でOpenStackを構築 - LT@コンテナ型仮想化情報交換会LT
多段LXC構成でOpenStackを構築 - LT@コンテナ型仮想化情報交換会LT
Yoshinari Kadokawa
 
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes
Takeshi Komiya
 
「やっちまったぁ!」を防ごう!
「やっちまったぁ!」を防ごう!「やっちまったぁ!」を防ごう!
「やっちまったぁ!」を防ごう!
博文 斉藤
 
Report JAZUG activities 2010.08-2011.09
Report JAZUG activities 2010.08-2011.09Report JAZUG activities 2010.08-2011.09
Report JAZUG activities 2010.08-2011.09
Saori Ando
 
モテたい...Watsonでモテる秘訣を...ディスカバリーしてみた:女性限定! クラウド勉強会 ~Watson&Node-REDでアプリ開発~
モテたい...Watsonでモテる秘訣を...ディスカバリーしてみた:女性限定! クラウド勉強会 ~Watson&Node-REDでアプリ開発~モテたい...Watsonでモテる秘訣を...ディスカバリーしてみた:女性限定! クラウド勉強会 ~Watson&Node-REDでアプリ開発~
モテたい...Watsonでモテる秘訣を...ディスカバリーしてみた:女性限定! クラウド勉強会 ~Watson&Node-REDでアプリ開発~
Yoshiki Hayama
 
[Tokyo NodeFest 2015] Hardware Hacking for Javascript Developers
[Tokyo NodeFest 2015] Hardware Hacking for Javascript Developers[Tokyo NodeFest 2015] Hardware Hacking for Javascript Developers
[Tokyo NodeFest 2015] Hardware Hacking for Javascript Developers
Tomomi Imura
 
モテたい...Watsonでモテる秘訣を...ディスカバリーしてみた <追加公演: The TRUTH>:水曜ワトソンカフェvol.7
モテたい...Watsonでモテる秘訣を...ディスカバリーしてみた <追加公演: The TRUTH>:水曜ワトソンカフェvol.7 モテたい...Watsonでモテる秘訣を...ディスカバリーしてみた <追加公演: The TRUTH>:水曜ワトソンカフェvol.7
モテたい...Watsonでモテる秘訣を...ディスカバリーしてみた <追加公演: The TRUTH>:水曜ワトソンカフェvol.7
Yoshiki Hayama
 
How_to_install_OpenCV_ver1.0
How_to_install_OpenCV_ver1.0How_to_install_OpenCV_ver1.0
How_to_install_OpenCV_ver1.0
Satoshi Kume
 
Rancher jp1周年振り返り anniversary meetup slide summary
Rancher jp1周年振り返り anniversary meetup slide summaryRancher jp1周年振り返り anniversary meetup slide summary
Rancher jp1周年振り返り anniversary meetup slide summary
Tetsurou Yano
 
20131019 Eucalyptus in OSC 2013 Tokyo/Fall
20131019 Eucalyptus in OSC 2013 Tokyo/Fall20131019 Eucalyptus in OSC 2013 Tokyo/Fall
20131019 Eucalyptus in OSC 2013 Tokyo/Fall
Osamu Habuka
 
GitLab Meetup Tokyo#2 Rancher gitlab container registry
GitLab Meetup Tokyo#2 Rancher gitlab container registryGitLab Meetup Tokyo#2 Rancher gitlab container registry
GitLab Meetup Tokyo#2 Rancher gitlab container registry
Tetsurou Yano
 
Android デバッグ小ネタ
Android デバッグ小ネタAndroid デバッグ小ネタ
Android デバッグ小ネタ
l_b__
 
日報を支える技術
日報を支える技術日報を支える技術
日報を支える技術
Takashi Masuda
 
多段LXC構成でOpenStackを構築 - LT@コンテナ型仮想化情報交換会LT
多段LXC構成でOpenStackを構築 - LT@コンテナ型仮想化情報交換会LT多段LXC構成でOpenStackを構築 - LT@コンテナ型仮想化情報交換会LT
多段LXC構成でOpenStackを構築 - LT@コンテナ型仮想化情報交換会LT
Yoshinari Kadokawa
 
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes
Takeshi Komiya
 
「やっちまったぁ!」を防ごう!
「やっちまったぁ!」を防ごう!「やっちまったぁ!」を防ごう!
「やっちまったぁ!」を防ごう!
博文 斉藤
 
Report JAZUG activities 2010.08-2011.09
Report JAZUG activities 2010.08-2011.09Report JAZUG activities 2010.08-2011.09
Report JAZUG activities 2010.08-2011.09
Saori Ando
 
モテたい...Watsonでモテる秘訣を...ディスカバリーしてみた:女性限定! クラウド勉強会 ~Watson&Node-REDでアプリ開発~
モテたい...Watsonでモテる秘訣を...ディスカバリーしてみた:女性限定! クラウド勉強会 ~Watson&Node-REDでアプリ開発~モテたい...Watsonでモテる秘訣を...ディスカバリーしてみた:女性限定! クラウド勉強会 ~Watson&Node-REDでアプリ開発~
モテたい...Watsonでモテる秘訣を...ディスカバリーしてみた:女性限定! クラウド勉強会 ~Watson&Node-REDでアプリ開発~
Yoshiki Hayama
 
[Tokyo NodeFest 2015] Hardware Hacking for Javascript Developers
[Tokyo NodeFest 2015] Hardware Hacking for Javascript Developers[Tokyo NodeFest 2015] Hardware Hacking for Javascript Developers
[Tokyo NodeFest 2015] Hardware Hacking for Javascript Developers
Tomomi Imura
 
モテたい...Watsonでモテる秘訣を...ディスカバリーしてみた <追加公演: The TRUTH>:水曜ワトソンカフェvol.7
モテたい...Watsonでモテる秘訣を...ディスカバリーしてみた <追加公演: The TRUTH>:水曜ワトソンカフェvol.7 モテたい...Watsonでモテる秘訣を...ディスカバリーしてみた <追加公演: The TRUTH>:水曜ワトソンカフェvol.7
モテたい...Watsonでモテる秘訣を...ディスカバリーしてみた <追加公演: The TRUTH>:水曜ワトソンカフェvol.7
Yoshiki Hayama
 
How_to_install_OpenCV_ver1.0
How_to_install_OpenCV_ver1.0How_to_install_OpenCV_ver1.0
How_to_install_OpenCV_ver1.0
Satoshi Kume
 
Rancher jp1周年振り返り anniversary meetup slide summary
Rancher jp1周年振り返り anniversary meetup slide summaryRancher jp1周年振り返り anniversary meetup slide summary
Rancher jp1周年振り返り anniversary meetup slide summary
Tetsurou Yano
 
20131019 Eucalyptus in OSC 2013 Tokyo/Fall
20131019 Eucalyptus in OSC 2013 Tokyo/Fall20131019 Eucalyptus in OSC 2013 Tokyo/Fall
20131019 Eucalyptus in OSC 2013 Tokyo/Fall
Osamu Habuka
 
GitLab Meetup Tokyo#2 Rancher gitlab container registry
GitLab Meetup Tokyo#2 Rancher gitlab container registryGitLab Meetup Tokyo#2 Rancher gitlab container registry
GitLab Meetup Tokyo#2 Rancher gitlab container registry
Tetsurou Yano
 

Similar to Android Hacks - 合宿 Activity (20)

Android4.2徹底解剖!
Android4.2徹底解剖!Android4.2徹底解剖!
Android4.2徹底解剖!
leverages_event
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDE
dcubeio
 
Android Hacks - Hack59
Android Hacks - Hack59Android Hacks - Hack59
Android Hacks - Hack59
Masanori Ohkawara
 
冬だからAndroid再入門
冬だからAndroid再入門冬だからAndroid再入門
冬だからAndroid再入門
Katsumi Honda
 
20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会
Yukihiro Kitazawa
 
Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010
Takashi EGAWA
 
20130412 titanium meetupvol7
20130412 titanium meetupvol720130412 titanium meetupvol7
20130412 titanium meetupvol7
Hiroshi Oyamada
 
日本Androidの会 中国支部資料
日本Androidの会 中国支部資料日本Androidの会 中国支部資料
日本Androidの会 中国支部資料
Masafumi Terazono
 
Using the Fragments(Android)
Using the Fragments(Android)Using the Fragments(Android)
Using the Fragments(Android)
Teruaki Kinoshita
 
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップWebアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
Naoki Iwami
 
Malwat4 20130223 analyzing_android_malware
Malwat4 20130223 analyzing_android_malwareMalwat4 20130223 analyzing_android_malware
Malwat4 20130223 analyzing_android_malware
Ayase
 
Unityファンへ贈る! Unite12 & gamescom 2012 視察報告
Unityファンへ贈る! Unite12 & gamescom 2012 視察報告Unityファンへ贈る! Unite12 & gamescom 2012 視察報告
Unityファンへ贈る! Unite12 & gamescom 2012 視察報告
Nobuhiko Sasaki
 
Android Hacks - Hack8
Android Hacks - Hack8Android Hacks - Hack8
Android Hacks - Hack8
Masanori Ohkawara
 
おいしいFragment #antama_ws
おいしいFragment #antama_wsおいしいFragment #antama_ws
おいしいFragment #antama_ws
Takahiro Yoshimura
 
Android Hacks - 合宿インテント
Android Hacks - 合宿インテントAndroid Hacks - 合宿インテント
Android Hacks - 合宿インテント
Masanori Ohkawara
 
Google I/O 2012 and Android 4.1
Google I/O 2012 and Android 4.1Google I/O 2012 and Android 4.1
Google I/O 2012 and Android 4.1
Katsumi Onishi
 
iPhoneアプリ開発の歩き方〜Swift編〜
iPhoneアプリ開発の歩き方〜Swift編〜iPhoneアプリ開発の歩き方〜Swift編〜
iPhoneアプリ開発の歩き方〜Swift編〜
Yusuke SAITO
 
Build your AR app by using AR Foundation samples
Build your AR app by using AR Foundation samplesBuild your AR app by using AR Foundation samples
Build your AR app by using AR Foundation samples
Hirokazu Egashira
 
Kanazawa.js.Next
Kanazawa.js.NextKanazawa.js.Next
Kanazawa.js.Next
dynamis
 
Android4.2徹底解剖!
Android4.2徹底解剖!Android4.2徹底解剖!
Android4.2徹底解剖!
leverages_event
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDE
dcubeio
 
冬だからAndroid再入門
冬だからAndroid再入門冬だからAndroid再入門
冬だからAndroid再入門
Katsumi Honda
 
20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会
Yukihiro Kitazawa
 
Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010
Takashi EGAWA
 
20130412 titanium meetupvol7
20130412 titanium meetupvol720130412 titanium meetupvol7
20130412 titanium meetupvol7
Hiroshi Oyamada
 
日本Androidの会 中国支部資料
日本Androidの会 中国支部資料日本Androidの会 中国支部資料
日本Androidの会 中国支部資料
Masafumi Terazono
 
Using the Fragments(Android)
Using the Fragments(Android)Using the Fragments(Android)
Using the Fragments(Android)
Teruaki Kinoshita
 
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップWebアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
Naoki Iwami
 
Malwat4 20130223 analyzing_android_malware
Malwat4 20130223 analyzing_android_malwareMalwat4 20130223 analyzing_android_malware
Malwat4 20130223 analyzing_android_malware
Ayase
 
Unityファンへ贈る! Unite12 & gamescom 2012 視察報告
Unityファンへ贈る! Unite12 & gamescom 2012 視察報告Unityファンへ贈る! Unite12 & gamescom 2012 視察報告
Unityファンへ贈る! Unite12 & gamescom 2012 視察報告
Nobuhiko Sasaki
 
おいしいFragment #antama_ws
おいしいFragment #antama_wsおいしいFragment #antama_ws
おいしいFragment #antama_ws
Takahiro Yoshimura
 
Android Hacks - 合宿インテント
Android Hacks - 合宿インテントAndroid Hacks - 合宿インテント
Android Hacks - 合宿インテント
Masanori Ohkawara
 
Google I/O 2012 and Android 4.1
Google I/O 2012 and Android 4.1Google I/O 2012 and Android 4.1
Google I/O 2012 and Android 4.1
Katsumi Onishi
 
iPhoneアプリ開発の歩き方〜Swift編〜
iPhoneアプリ開発の歩き方〜Swift編〜iPhoneアプリ開発の歩き方〜Swift編〜
iPhoneアプリ開発の歩き方〜Swift編〜
Yusuke SAITO
 
Build your AR app by using AR Foundation samples
Build your AR app by using AR Foundation samplesBuild your AR app by using AR Foundation samples
Build your AR app by using AR Foundation samples
Hirokazu Egashira
 
Kanazawa.js.Next
Kanazawa.js.NextKanazawa.js.Next
Kanazawa.js.Next
dynamis
 

More from Masanori Ohkawara (13)

Android Hacks - 合宿 Service
Android Hacks - 合宿 ServiceAndroid Hacks - 合宿 Service
Android Hacks - 合宿 Service
Masanori Ohkawara
 
Android Hacks - Hack57
Android Hacks - Hack57Android Hacks - Hack57
Android Hacks - Hack57
Masanori Ohkawara
 
Android Hacks - Hack47
Android Hacks - Hack47Android Hacks - Hack47
Android Hacks - Hack47
Masanori Ohkawara
 
Android Hacks - Hack40
Android Hacks - Hack40Android Hacks - Hack40
Android Hacks - Hack40
Masanori Ohkawara
 
Android Hacks - Hack32
Android Hacks - Hack32Android Hacks - Hack32
Android Hacks - Hack32
Masanori Ohkawara
 
Android Hacks - Hack31
Android Hacks - Hack31Android Hacks - Hack31
Android Hacks - Hack31
Masanori Ohkawara
 
Android Hacks - Hack30
Android Hacks - Hack30Android Hacks - Hack30
Android Hacks - Hack30
Masanori Ohkawara
 
Android Hacks - Hack27 ~ Hack29
Android Hacks - Hack27 ~ Hack29Android Hacks - Hack27 ~ Hack29
Android Hacks - Hack27 ~ Hack29
Masanori Ohkawara
 
Android Hacks - Hack26
Android Hacks - Hack26Android Hacks - Hack26
Android Hacks - Hack26
Masanori Ohkawara
 
Android Hacks - Hack21
Android Hacks - Hack21Android Hacks - Hack21
Android Hacks - Hack21
Masanori Ohkawara
 
Android Hacks - Hack18 ~ Hack20
Android Hacks - Hack18 ~ Hack20Android Hacks - Hack18 ~ Hack20
Android Hacks - Hack18 ~ Hack20
Masanori Ohkawara
 
Android Hacks - Hack12
Android Hacks - Hack12Android Hacks - Hack12
Android Hacks - Hack12
Masanori Ohkawara
 
Android Hacks - Hack11
Android Hacks - Hack11Android Hacks - Hack11
Android Hacks - Hack11
Masanori Ohkawara
 

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