2.Androidアプリの基礎知識
2-1 Androidのアーキテクチャ
5つのレイヤに分類
アプリケーション
アプリケーションフレームワーク
ライブラリ
Androidランタイム
Linuxカーネル
(1)アプリケーションレイヤ
Androidアプリのレイヤ
①Dialer
②Contacts
③Browser
④Maps
⑤Setup
電話帳アプリ
連宅先やアプリのショートカットを画面に配置
Webサイトの閲覧
Googleマップの利用
アプリの設定
その他ユーザがインストールしたアプリ
(2)アプリケーションフレームワークレイヤの主要コンポーネント
①Active Manager
②Window Manager
③Content Providers
④View System
⑤Notification Manager
⑥Package Manager
⑦Telephony Manager
⑧Resource Manager
⑨Location Manager
⑩XMPP Service
アプリケーションのライフサイクル管理
ウィンドウの管理
アプリケーション間データ共有の管理
ユーザインターフェースの管理
ステータスバーへの警告表示の管理
インストールの管理
通話機能の管理
リソースの管理
位置情報の管理
メッセージングサービスの管理
(3)ライブラリレイヤの主要コンポーネント
①Surface Manager
②Media Framework
③SQLite
④OpenGL / ES
⑤Free Type
⑥Web Kit
⑦SGL
⑧SSL
⑨libc
複数アプリケーション間の2D/3Dグラ
フィックスを合成するライブラリ
ビデオ形式の再生/記録のライブラリ
リレーショナルデータベースのライブラリ
3Dグラフィックスエンジン
ビットマップとベクターフォントのレンダリ
ングを行うライブラリ
ブラウザ表示を行うためのHTMLレンダ
リングエンジン
2Dグラフィックエンジン
SSLのライブラリ
標準的なC言語ライブラリ
(4)Androidランタイムレイヤの主要コンポーネント
Android の Dalvik 仮想マシンのレイヤ
①Core Libraries
②Dalvik 仮想マシン
Java 言語に準拠したコアライブラリ機能
拡張子.dex フォーマットのバイトコードを
実行する仮想マシン
(5)Linux カーネルレイヤ
Linux ベースのOS
■最もハードウェアに近いレイヤ。
■特に意識する必要はない。
2-2 Android アプリの構成要素
4つの構成要素からなる
Android アプリ
アクティビティ
 これらは、必ず1つずつ必要と
は限らない
アプリ内の画面、
(UI,イベント処理など)
ブロードキャストレシーバ
ブロードキャストインテントの受信
(他のアプリやOSからのメッセージ受信)
サービス
バックグラウンドで動作するプロセス
コンテンツプロバイダ
他のアプリとのやりとりで
利用するデータベース
(1)アクティビティの概要
ユーザインターフェース、イベント処理
など、ユーザとアプリとの仲介を行う。
Own making Application
部分的な
利用
Own making
Activity
 詳細は後述
Phone Application
Phone Activity
①ひとつの画面に1つのActivity
Call log Activity
②他のアプリのActivityを使うこと
ができる。
Contacts Activity
③他のアプリの任意の画面を開き、
その結果を得ることができる。
Favorites Activity
(2)ブロードキャストレシーバの概要
他のアプリケーションやOSからのインテントを
受信し、それに応じた処理を行うオブジェクト
 詳細は後述
Own making Application
Own making
Activity
ブロードキャストレシーバがないと、
ブロードキャストを受信しない。
Broadcast
Receiver
インテントを
ブロードキャスト
Android OS
【例】
■バッテリ残量が変化したとき、Android はインテント
android.intent.action.BATTERY_CHABGED
を全アプリケーションにブロードキャストする。
(3)サービスの概要
 詳細は後述
画面表示とは独立してバックグラウンドで
処理を実行し続けることができるオブジェクト
■ユーザとのやりとりは、Notification(通知書)
やToastなど特殊なインターフェースを通じて行
う。
(4)コンテンツプロバイダの概要
 詳細は後述
データベース中のデータを他のアプリケーション
に提供するオブジェクト
■大量のデータのやり取りを行う際に用いる。
■少量のデータはインテントでも可能。
(5)インテントの用途
 詳細は後述
①アクティビティの起動
Context.start.Activity()メソッドでインテンツを投げる。
②ブロードキャストレシーバに通知
ⅰ)Context.sendBroadcast()メソッドでインテンツを投げることで、
インテンツのブロードキャストを行う。
ⅱ)各アプリはブロードキャストレシーバで情報を受信する。
③サービスの起動・接続・停止
ⅰ)Context.startService()でインテンツを投げることで、
サービスと接続する。
ⅱ)Context.stopService()でインテンツを投げることで、
サービスを停止します。
(6)アクティビティのライフサイクル
アクティビティ起動
onCreate()
ユーザ操作で
アクティビティ
T
に戻る
プロセス終了
onStart()
onResume()
実行中
他のアクティビティ起動
他のアクティビティ
T
でメモリ消費
onStart()
アクティビティ
の前面表示
onPause()
アクティビティが非表示
onStop()
onDestroy()
アクティビティ停止
アクティビティ
の前面表示
メソッドが呼ばれるタイミング(整理)
メソッド
onCreate
onStart
onRestart
onResume
onPause
onStop
onDestroy
呼ばれるタイミング
アクティビティ生成時
アクティビティ表示が開始されたとき
停止状態から表示再開に遷移するとき
ユーザの操作受付を開始したとき
ユーザの操作受付を中断したとき
アクティビティの表示を中断したとき
アクティビティが破棄されたとき
注意事項
■端末の向きを変えて縦画面と横画面を切り替えたとき、
次の流れでメソッドが呼ばれる。
onDestroy → onCreate
■アクティビティの終了は
①明示的にアクティビティの終了命令を実行したとき
(ActivityManager の killBackgroundProcesses メソッドを実行)
②他のアクティビティがメモリを要求したとき
すなわち、他のアクティビティに遷移したり、
バックキーで閉じても起動し続ける。
2-3 Android アプリ作成の手順
画面レイアウト
(main.xml)
ソースコード
(*.java)
Eclipse
リソースファイル
(*.png, *.mp3等)
AndroidManifest.xml
ビルド
未署名 apk ファイル
(*.apk)
【注意】
■ 画面レイアウトを動的に
Javaで生成する場合画面
レイアウトはいらない。
■ リソースファイルは使わな
ければいらない。
署名
(*.keystore)
署名付き apk ファイル
(*.apk)
(実機で動かすとき)
2-4 Android のクラスライブラリ
(1)クラスライブラリとは
クラス
: 特定の機能を持ったプログラムを部品化したもの
パッケージ
: 関連するクラスをまとめたもの
クラスライブラリ : 関連するパッケージをまとめたもの
Class A
Package A
Class B
Class Library A
Class C
Package B
Class D
Class E
Package C
Class F
Class Library B
Class G
Package D
Class H
(2)Android で利用できるパッケージ
①Java言語の標準APIサブセット
(文字列のクラスなど)
②Android の独自API
(携帯端末のユーザインターフェースのクラスなど)
(3)Java言語の標準API
パッケージ名
説明
java.awt.font
java.awt.io
java.awt.lang
java.awt.math
java.awt.net
java.awt.nio
java.awt.security
java.awt.sql
java.awt.text
java.awt.util
フォント
IO
基本
数値演算
通信
新IO
セキュリティ
SQL
テキスト
ユーティリtィ
(4)Android独自のAPI(その1)
パッケージ名
説明
android
android.app
android.content
android.database
android.graphics
android.hardware
android.location
android.media
android.net
リソース
アプリケーション
公開情報へのアクセス
データベースへのアクセス
グラフィックス
ハードウェア制御
位置情報
メディアプレイヤ
通信
Android独自のAPI(その2)
パッケージ名
説明
android.opengl
android.os
android.preference
android.provider
android.sax
android.test
android.text
android.util
android.view
android.webkit
android.widget
OpenGL
OSシステムサービス
プリファレンス
コンテントプロバイダ
SAX
テスト
テキスト
ユーティリティ
ビュー
HTMLレンダリング
ウィジェット
APIリファレンスの参照先
以下のサイトで確認することができる。
Http://developer.android.com/intl/ja/reference/package.html
ダウンロード

Androidアプリの基礎知識