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)フォーカスを得ていること
ActivityActivity
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

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