Upload
masanori-ohkawara
View
2.625
Download
2
Embed Size (px)
Citation preview
ANDROIDHACKS# 合宿編 ACTIVITY 再勉強担当:かわらたん
Twitter : @pfkawaraBlog : http://kawara-tan.blogspot.com/
23/05/02
1
この資料について• この資料は下記の出典元をベースに勉強会で作成した資料で
す。
• 『 Android Hacks 』(株式会社ブリリアントサービス著、オライリー・ジャパン刊)
• この本の紹介ページが下記にあります。
• http://www.oreilly.co.jp/books/9784873114569/
23/05/02
2
アジェンダ• #6 Activity 入門 (p.41 ~ p.58) ベース + Android Developers
• アクティビティとは• アクティビティのライフサイクル• 状態を保存、復元する
23/05/02
3
1. アクティビティとは
23/05/02
4
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
1. アクティビティとは• MainActivity
23/05/02
6
Activity クラスを継承
Activity が作られる時に呼ばれるメソッド
( 後述 )
この Activity の紐付くレイアウトを指定
( 後述 )
1. アクティビティとは• レイアウトファイル
• layout フォルダにある xml ファイル
23/05/02
7
文字列を画面に表示するコンポーネ
ント
縦一列または横一列にコンポーネントを並べるレイア
ウト
strings.xml のhello を参照 ( 後
述 )
fill_parent : 親のビューとできるだけ同じ大きさまで
広がるwrap_content : コンポーネント自身が最低限必要な大
きさまで広がる
• Activity とレイアウトファイルの紐付け
1. アクティビティとは
23/05/02
8Layout フォルダに xml ファイ
ルを置いてビルドすると、自動で R.java に参照先 ID が追加さ
れる
Activity と紐づくレイアウトの ID を指定
• Strings.xml の値参照
1. アクティビティとは
23/05/02
9
strings.xml に値を追加してビルドすると、自動で R.java に参
照先 ID が追加される参照する値の ID
を指定
2. Activity のライフサイクル
23/05/02
10
2. Activity のライフサイクル
• アクティビティには人の一生と同じように、起動から終了までのライフサイクルが存在します。
• 動いている Activity は基本 1 個• 新しい Activity が作られると、前
に動いていた Activity はスタックに積まれる (Back Stack)
• 状態変化に応じて処理を記述できるように、 onStart() などの各メソッドが用意されている。
23/05/02
11http://developer.android.com/intl/ja/guide/topics/fundamentals/activities.html
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入力や操作ができる期間
• 各メソッド
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()
• 各メソッド ( これらメソッド 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 が破棄されると直前に呼ばれる。次のメソッド:無い ( `・ ω ・ ´)
• その他のメソッド
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()
• その他のメソッド
• 他にもある ( はず )
2. Activity のライフサイクル
23/05/02
16http://developer.android.com/intl/ja/guide/topics/fundamentals/activities.html
• 別 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やファイ
ルに ) 保存
3. 状態を保存、復元する
23/05/02
18
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
3. 状態を保存、復元する• Activity( 画面 ) の状態を保存、復元する
23/05/02
20
参考 URL• Android Developers
• http://developer.android.com/intl/ja/index.html
23/05/02
21