豚吐露@wiki
Applicationの基本
最終更新:
Bot(ページ名リンク)
-
view
Androidアプリ基礎
Linux Mint 14.1
ADT v21.1.0
OpenJDK 1.6.0_27
ADT v21.1.0
OpenJDK 1.6.0_27
- アプリケーション形態
アプリケーションを構成するコンポーネントは以下の4種類。
■Activity
画面のこと。GUIでユーザ操作を受け付ける。
画面のこと。GUIでユーザ操作を受け付ける。
■Service
ユーザ操作を必要としない、バックグラウンドで動作するアプリ。
アプリケーションで定期的に画面上の情報を更新したい場合などもserviceで定期動作させて、activityで受け取るのような作りにしなければならない。
ユーザ操作を必要としない、バックグラウンドで動作するアプリ。
アプリケーションで定期的に画面上の情報を更新したい場合などもserviceで定期動作させて、activityで受け取るのような作りにしなければならない。
■ContentProvider
保存したデータセットを複数のアプリで利用可能にする仕組み。
保存したデータセットを複数のアプリで利用可能にする仕組み。
■BroadcastReceiver
intentはbroadcastされる。broadcastされたintentをreceiveするための仕組み。
と言うか、システムにコールバック関数(onRacive)を登録して、システムが条件に従ってどのコールバック関数実行するか判断するって感じかな?
intentはbroadcastされる。broadcastされたintentをreceiveするための仕組み。
と言うか、システムにコールバック関数(onRacive)を登録して、システムが条件に従ってどのコールバック関数実行するか判断するって感じかな?
- アプリケーションの状態遷移
まず、Androidアプリはmain関数を持たない。main関数はAndroid framework内にあり、各アプリはframewordから呼び出されているimage。
■Activity
実行・ポーズ・停止の3状態を持つ。
起動トリガも3つ。startActivity()による生成。startActivityForResult()による生成。AndroidManifest.xmlによるシステムからの起動。
状態遷移は以下のような感じ。
実行・ポーズ・停止の3状態を持つ。
起動トリガも3つ。startActivity()による生成。startActivityForResult()による生成。AndroidManifest.xmlによるシステムからの起動。
状態遷移は以下のような感じ。

onCreate() | |
onStart() | |
onResume() | |
onPause() | |
onStop() | |
onRestart() | |
onDestroy() |
■Service
serviceの起動トリガは3つ。startService()による生成。bindService()による生成。AndroidManifest.xmlによるシステムからの起動。
serviceの起動トリガは3つ。startService()による生成。bindService()による生成。AndroidManifest.xmlによるシステムからの起動。

onCreate() | |
onStart() | |
onBind() | |
onUnbind() | |
onRebind() | |
onDestroy() |
■ContentProvider
データ依存のコンポーネントなので、状態って状態は持たない。
データ依存のコンポーネントなので、状態って状態は持たない。
onCreate() |
■BroadcastReceiver
registerReceiver()、またはAndroidManifest.xmlによってシステムに登録される。
対象のintentが送信されるとonReceive()が呼ばれる。コールバック関数登録みたいなもんですね。
registerReceiver()、またはAndroidManifest.xmlによってシステムに登録される。
対象のintentが送信されるとonReceive()が呼ばれる。コールバック関数登録みたいなもんですね。
onReceive() |
- Intentについて
Intentはアプリのコンポーネント間で処理を受け渡しする仕組み。
■明示的Intentの発行
Activityで例えると、任意のアプリケーションで設定画面を開く等の行為がそれ。
開くべきActivityのクラス名などが分かってる場合。
Activityで例えると、任意のアプリケーションで設定画面を開く等の行為がそれ。
開くべきActivityのクラス名などが分かってる場合。
■暗黙的Intentの発行
何のコンポーネントを開けば良いのかクラス名などがわかってない場合、どういうものを開きたいかという情報だけをIntentに乗っけて、Androidに開いてってお願いする。すると、AndroidはIntentに付いてる情報から開けそうなアプリケーションを探して開こうとする。
例えば、メールに付いてきたURLをタップするとブラウザが開く。この時、メーラーはURLを渡すべきコンポーネントがなんてヤツなのか分からなくても開ける。コレはURLをタップした時に作成されるIntentに『URLですよ。』って情報が乗ってるから。Androidには予め『ほげってアプリはURLを開けるよ。』とかって情報が集められてる。それがBroadcastReceiverって仕組み。
この時、その情報を複数のコンポーネントが開けるって状況だと、どのアプリで開くか聞いてくる。
なんかのアプリでtextファイルを開こうとした場合、
何のコンポーネントを開けば良いのかクラス名などがわかってない場合、どういうものを開きたいかという情報だけをIntentに乗っけて、Androidに開いてってお願いする。すると、AndroidはIntentに付いてる情報から開けそうなアプリケーションを探して開こうとする。
例えば、メールに付いてきたURLをタップするとブラウザが開く。この時、メーラーはURLを渡すべきコンポーネントがなんてヤツなのか分からなくても開ける。コレはURLをタップした時に作成されるIntentに『URLですよ。』って情報が乗ってるから。Androidには予め『ほげってアプリはURLを開けるよ。』とかって情報が集められてる。それがBroadcastReceiverって仕組み。
この時、その情報を複数のコンポーネントが開けるって状況だと、どのアプリで開くか聞いてくる。
なんかのアプリでtextファイルを開こうとした場合、

こんな風にtextファイルを開くことができるんだって自己主張してるアプリ一覧から選択する画面が出てくる。※Nexus7(Android4.2)の場合
更新日: 2013年03月19日 (火) 10時03分05秒