21
ANDROID HACKS # 合合合 ACTIVITY 合合合 合合 合合合合合 Twitter : @pfkawara Blog : http://kawara-tan.blogspot.com/ 22/03/13 1

Android Hacks - 合宿 Activity

Embed Size (px)

Citation preview

Page 1: Android Hacks - 合宿 Activity

ANDROIDHACKS# 合宿編 ACTIVITY 再勉強担当:かわらたん

Twitter : @pfkawaraBlog : http://kawara-tan.blogspot.com/

23/05/02

1

Page 2: Android Hacks - 合宿 Activity

この資料について• この資料は下記の出典元をベースに勉強会で作成した資料で

す。

• 『 Android Hacks 』(株式会社ブリリアントサービス著、オライリー・ジャパン刊)

• この本の紹介ページが下記にあります。

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

23/05/02

2

Page 3: Android Hacks - 合宿 Activity

アジェンダ• #6 Activity 入門 (p.41 ~ p.58) ベース + Android Developers

• アクティビティとは• アクティビティのライフサイクル• 状態を保存、復元する

23/05/02

3

Page 4: Android Hacks - 合宿 Activity

1. アクティビティとは

23/05/02

4

Page 5: Android Hacks - 合宿 Activity

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

1. アクティビティとは• MainActivity

23/05/02

6

Activity クラスを継承

Activity が作られる時に呼ばれるメソッド

( 後述 )

この Activity の紐付くレイアウトを指定

( 後述 )

Page 7: Android Hacks - 合宿 Activity

1. アクティビティとは• レイアウトファイル

• layout フォルダにある xml ファイル

23/05/02

7

文字列を画面に表示するコンポーネ

ント

縦一列または横一列にコンポーネントを並べるレイア

ウト

strings.xml のhello を参照 ( 後

述 )

fill_parent : 親のビューとできるだけ同じ大きさまで

広がるwrap_content : コンポーネント自身が最低限必要な大

きさまで広がる

Page 8: Android Hacks - 合宿 Activity

• Activity とレイアウトファイルの紐付け

1. アクティビティとは

23/05/02

8Layout フォルダに xml ファイ

ルを置いてビルドすると、自動で R.java に参照先 ID が追加さ

れる

Activity と紐づくレイアウトの ID を指定

Page 9: Android Hacks - 合宿 Activity

• Strings.xml の値参照

1. アクティビティとは

23/05/02

9

strings.xml に値を追加してビルドすると、自動で R.java に参

照先 ID が追加される参照する値の ID

を指定

Page 10: Android Hacks - 合宿 Activity

2. Activity のライフサイクル

23/05/02

10

Page 11: Android Hacks - 合宿 Activity

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

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

• 各メソッド

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

• 各メソッド ( これらメソッド 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

• その他のメソッド

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

• その他のメソッド

• 他にもある ( はず )

2. Activity のライフサイクル

23/05/02

16http://developer.android.com/intl/ja/guide/topics/fundamentals/activities.html

Page 17: Android Hacks - 合宿 Activity

• 別 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

3. 状態を保存、復元する

23/05/02

18

Page 19: Android Hacks - 合宿 Activity

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

3. 状態を保存、復元する• Activity( 画面 ) の状態を保存、復元する

23/05/02

20

Page 21: Android Hacks - 合宿 Activity

参考 URL• Android Developers

• http://developer.android.com/intl/ja/index.html

23/05/02

21