Android アクティビティ概念の図解説明

13
Android ”アクティビティ” 概念の図解説明 アイデアクラフト 開米瑞浩 http://ideacraft.jp 最終更新: 2015-0505

Transcript of Android アクティビティ概念の図解説明

Android ”アクティビティ” 概念の図解説明

アイデアクラフト 開米瑞浩

http://ideacraft.jp

最終更新: 2015-0505

概要・想定読者・使い方

Android アプリ開発で使われる “アクティビティ” 概念

をわかりやすく解説します。

複雑な技術概念を図解説明するための手法としても参

考にしてください。

必要に応じて Android 公式技術ドキュメント、その他の技術解説資料を参照してください。

• Android アプリ開発の初級者で、「アクティビティ」の働きとライフサイクルについてなんとなく分かった気はしているものの、いまいちピンと来ていない方

• 技術概念を図解説明する手法に興味のある方

【著作権者】ドキュメント・コンサルタント 開米瑞浩

著者公式サイト http://ideacraft.jp

(最終ページに著者紹介を記載)

【使い方】

【本書の概要】

【想定読者】

2

Activity とは(1) 3

ユーザ 電話をする

写真を撮る

メール送信

マップを見る

電話アプリ

写真アプリ

メールアプリ

マップアプリ

ユーザは携帯端末で何らかの目的を達成するためにアプリを使用します。 そのために、アプリはユーザに対して双方向のインタラクションの手段を提供しなければなりません。

インタラクション

目的 アプリ

Activity とは(2) 4

ユーザ 電話をする

電話アプリ

ユーザ~アプリ間のインタラクションの手段になるのが「画面」で、その「画面」を作るために働くのが Activity です。 Activity は、アプリのコンポーネントの一部であり、画面を提供しています。

目的 アプリ

Activity 画面 インタラクション

Activity とは(3) 5

ユーザ

一般に、アプリは1つ以上の画面を持ちます。 画面ごとに異なるActivityがその画面の構成を受け持ちます。 アプリはお互いが疎結合の複数のActivityで構成されています。

アプリ

Activity 1

画面 1

インタラクション

Activity 2

画面 2

Activity 3

画面 3

Activityどうしは 疎結合

ストレージ領域

Activity が動作するための条件 6

Activity がユーザとの間でインタラクティブに動作するためには、下記2つの条件が必要です。

(A)実行メモリ上にそのコードとデータ(変数)が展開されていること (B)フォーカスを得ていること

Activity Activity Activity (Code)

実行メモリ領域

Activity (Code & Data) ユーザ

(A)

(B)

実行中のActivity ( A,B の2条件を満たしている)

起動前のActivity ( Aを満たさず、当然B も満たしていない)

Activity と WindowManager 7

Activity は画面を表示してユーザ入力を受け付けますが、 この処理を実際に行っているのは WindowManager です。

実行メモリ領域

Activity 1 ユーザ Window Manager

Activity 2

Activity 3

visible かつ フォーカス有

visible かつ フォーカス無

非visible かつ フォーカス無

① ②

⑤ ③

WindowManager は下記2つの役割を果たします。 • ユーザ入力(①) を、どのActivityに渡すか(②)を制御する。

(つまりフォーカス制御)

• 複数のActivityの画面出力(③、④)を合成して最終的な画面を 構成してユーザに表示(⑤)する。

Activity のとりうる主要な状態 8

shutdown 状態も含めて、 Activity のとりうる主要な状態を 概念図化するとこのようになります

実行メモリ領域

Activity 1 (Code & Data)

Window Manager

Activity 2 (Code & Data)

Activity 3 (Code & Data)

ストレージ領域

Activity (Code)

前面動作中

一時停止

中断

起動前 (=終了後)

状態 フォーカス

有無 メモリ 上?

visible?

yes

yes

yes

no

yes

yes

no

no

Activity LifeCycleとの対応関係(1) 9

ところで、Starting an Activity | Android Developers 記載の下記チャートとの対応関係を示すと、こうなります。

前面動作中

一時停止

中断

起動前 (=終了後)

Starting an Activity | Android Developers Figure 1. http://developer.android.com/training/basics/activity-lifecycle/starting.html

Activity LifeCycleとの対応関係(2) 10

Android アプリの動作時間の大半は、この3つの状態を行ったり来たりします。

Starting an Activity | Android Developers Figure 1. http://developer.android.com/training/basics/activity-lifecycle/starting.html

Activity LifeCycleとの対応関係(3) 11

Resumed, Paused, Stopped の状態は、ユーザの操作次第で 何分でも何時間でも継続することがあります。

Starting an Activity | Android Developers Figure 1. http://developer.android.com/training/basics/activity-lifecycle/starting.html

アクティビティがフォアグラウンドで 動作中

バックグラウンドに移ったが、アクティビティの一部は まだ見えている状態

他のアクティビティやダイアログに完全に覆われてしまい、見えなくなった状態

Activity LifeCycleとの対応関係(4) 12

下記、赤点線の2つのルートは、通常、ごく短時間で通過します。 つまりCreated や Started 状態で長時間とどまる事はありません。

Starting an Activity | Android Developers Figure 1. http://developer.android.com/training/basics/activity-lifecycle/starting.html

【著者紹介】

→著者公式サイト http://ideacraft.jp お問合せ先: http://ideacraft.jp/cms/main-contact.html 技術屋のためのドキュメント相談所(オルタナティブブログ) → http://blogs.itmedia.co.jp/doc-consul/

開米 瑞浩 (カイマイ ミズヒロ)

元:IT技術者。現:ドキュメント・コンサルタント。

難解な情報を整理分析して論理構造を見抜き、「素人にも分かりやすく表現する」ことを得意とする。

技術者向けの「分かりやすく書く力」研修や、難解な技術文書のリライト業務コンサルティングを提供。

技術者向けおよび一般ビジネスパーソン向けの「書く技術、説明する技術」に関する著書多数。

13