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