このページは現在作成中です
Androidアプリの基本構成
Androidアプリは幾つかのコンポーネントを組み合わせて作成する。コンポーネントはその役割ごとに幾つかに分類される。
Androidアプリを構成する4つのコンポーネント
もっとも基本的なコンポートネントは次の4種類。
Activities
画面。アクティビティはそれぞれが独立したコンポーネントとして作成され、その組み合わせでアプリを動作させる。別のアプリから、また別のアプリ内のアクティビティを動作させることも可能。
Services
裏側でこっそり働く子。ユーザーインターフェースは持たない。ネットワークからデータをダウンロードしてきたり、別のアプリを操作中に音楽ファイルを再生したり、ユーザーの操作を邪魔することは無い。アクティビティのような他のコンポーネントから起動され、動作を指定される、サービス精神の塊のような存在。
Content Providers
アプリケーションのデータへのアクセス共有を管理しデータの読み書きを行う。ファイルシステムやSQLiteなどのDB、インターネット上のデータなど、さまざまな場所に対応する。許可すれば他のアプリからデータの読み書きが可能だし、その逆も可能。動画を配信してくれる業者ではない。
Broadcast Reciever
システムからの通知を受け取ったり、システム全体へ通知を発信したりする。例えばスリープに入った、バッテリーが切れ掛かっている、写真を撮った、などなどの通知を受けたり、発信したりできる。
電話を自動録音するアプリなんかだと、電話が掛かってきたという通知を受けサービスを起動し録音する、という使い方が想定される。
電話を自動録音するアプリなんかだと、電話が掛かってきたという通知を受けサービスを起動し録音する、という使い方が想定される。
他にもコンポーネントには分類されないが、Androidアプリを構成する重要な要素がある。
マニフェスト
アプリに属するコンポーネントを規定するのがマニフェストファイル。XML形式で記述する。
Intentフィルターで、アプリのエントリポイント(初期起動するアクティビティ)を指定する。
Intentフィルターで、アプリのエントリポイント(初期起動するアクティビティ)を指定する。
例:雛形アプリの AndroidManifest.xml。Intentフィルターが Activityの子要素で指定されている。
<activity android:name=".MainActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
他にも幾つかのIntent Filterアクションおよびカテゴリーがあるが、アプリアイコンから起動する場合はこの指定が必要だと覚えておけばよい。
他のアプリから 特定の Intentアクションにより起動されるアプリは、別の指定を追加する必要がある。
他のアプリから 特定の Intentアクションにより起動されるアプリは、別の指定を追加する必要がある。
Intent(インテント:意図)
特定のアクティビティを指定、または「何をしたいのか」を指定し別のアプリを起動する。
同アプリ内のアクティビティ間連携にも使用される。
同アプリ内のアクティビティ間連携にも使用される。
例:明示的に特定のアクティビティを指定し、EditTextボックスの入力値を渡している
Intent intent = new Intent(this, DisplayActivity.class); EditText editText = (EditText) findViewById(R.id.input_message); String message = editText.getText().toString(); intent.putExtra(EXTRA_MESSAGE, message); startActivity(intent);
例:データ表示を指定し、Webページを開く
Uri uri = Uri.parse("http://www.android.com"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent);
簡略化のため省いているが、通常は事前に実行可能なIntentかチェックするためPackageManagerを使用する。この Intentで開かれるアプリは Intent Filterにて ACTION_VIEWアクションを受け付ける指定があるものの中から選ばれる。
リソース
アプリが利用する画像ファイル、レイアウト定義、言語ごとの文字列ファイルなどをひとまとめにし、Rクラスを通じた共通のアクセス方法を提供する。画像、動画、音声などのデータファイル、XMLファイルで構成される。
リソースは異なる解像度、画面サイズ、言語に対応するディレクトリに分けて構成することで自動的に対応するディレクトリ内のファイルが利用されるように最適化される。詳細はこちら
その他
基本の4コンポーネント種とリソースの他に、これらをサポートするコンポーネントが幾つかある。
- Intent
- Fragment