Androidアプリケーション開発の基礎知識を身につけよう
前回で開発環境が準備できたので、今回は必要な基礎知識を身につけて開発の準備を整えていきましょう。
対象読者
本連載はJavaおよびEclipseの基本を理解している方を対象としています。
前回の記事
Android独自の実行環境
AndroidのアプリケーションはJavaのVM上で動作しますが、日ごろ使用しているJava VMとは異なり、DalvikVMという低メモリ環境に最適化された独自のVM上で実行されます。
DalvikVMでは、Java標準のクラスライブラリのすべてがサポートされているわけではなりません。その結果、世の中に存在するJavaライブラリの多くはそのまま持ってきても使う事はできません。もし運よく、使いたいライブラリが非対応のAPIを利用していなければ使用できるので、Androidプロジェクトのビルドパスに対象のライブラリを追加して、エラーが出るかどうかで判断してください。
ビルドからアプリケーション実行までの流れも、かなり特徴的です。
- Javaソースコードをコンパイルして.classファイルを生成
- Javaクラスファイル(.class、.jar)をリコンパイルして、実行形式のファイル(.dex)を生成
- パッケージングしてアプリケーションファイル(.apk)を生成
このように、生成されたapkファイルを使ってアプリケーションがインストールされ、展開された.dexファイルでアプリケーションが実行されるという流れになります。
Androidのアプリケーションフレームワーク
続いて、Androidのアプリケーションフレームワークについて簡単に説明します。他にも色々と知っておいた方がよい概念はあるのですが、ここでは必須の概念である「アクティビティ」と「インテント」のみ説明します。
アクティビティ
まず、最も基本となるのは「アクティビティ」と呼ばれる要素です。通常は「1アクティビティ=1画面」で作成し、レイアウトやユーザーのイベント、アクティビティの状況に応じた処理を記述します。
アクティビティは開始~終了まで、次のようなライフサイクルで動作します。
インテント
インテントは、アクティビティ間やアプリケーション間でやり取りするメッセージの役割を果たすものです。インテントを送る事で、アプリケーション内の画面遷移や他アプリケーションの呼び出しを行います。
インテントには「明示的インテント」と「暗黙的インテント」の2種類が存在します。明示的インテントでは、相手を指定してインテントを送ります。一方、暗黙的インテントは相手を指定せずに送るインテントで、どのアクティビティが処理を行うかはインテントフィルタに応じて決定されます。