Android開発について

Androidの正体

AndroidはLinuxベースのプログラムである。
AndroidはJavaで開発されているが、動作環境はVMではなくDalvik仮想マシンである。 DalvikはAndroid専用の仮想マシンであり、より少ないメモリを使用するよう設計されている。

開発環境

一昔前の開発環境はEclipseを使用していた。Eclipseに専用プラグインやエミュレーターをインストールすることにより開発環境を構築することができた。
現在()2018年)は Android Studio という便利なものが用意されている。 インストールはより簡易になっており、ウィザードに従うだけで開発環境が整う。
Android Studioのダウンロード先

開発スタイル

フレームワーク(Framework)が用意されているので、それに沿った開発をしなければならない。
とはいえ開発の方法はVBやVisual C#と似ている。
VBの場合、ビジュアルエディタでフォームにボタンやラベルなどを配置し、 コントロールモジュールにメソッド(関数)を記述、 そしてボタンやラベルのアクションにメソッドを関連づける、という開発スタイルである。
Android開発も同じで、activity_main.xmlにボタンやラベルなどを配置し、 MainActivityクラスにメソッドを記述、 そしてボタンやラベルのアクションにメソッドを関連づけを行う。
activity_main.xmlはVisual Studioで用意されているビジュアルエディタを通して編集することができる。 ビジュアルエディタを使えば、直接XMLをいじらなくても、ドラッグ操作でボタンやラベルを配置しながらXML編集が可能である。

VBやC#と同様にAndroidでも多くのAPIやライブラリが用意されており活用できる。

コンパイル後のファイル | dex

Javaクラスはdexフォーマットに変換される。 クラスをコンパイルするとdex (Dalvik Executable)ファイルとなり、.apkファイルにzipされる。 Javaのバイトコードには変換しないとのこと。

Androidバージョンの違い

Androidを搭載した端末は多様であり、動作するしないの問題はつきものである。 Androidバージョンと動作保証する端末をあらかじめ決めておいたほうが良い。
各Androidバージョンと連動したAPIレベルというものが存在する。 プロジェクトを新規作成するときにAPIレベルを選択することになるので、あらかじめよく吟味しておくことが必要である。
AndroidバージョンとAPIレベルの対応表

その他の特徴


AndroidバージョンとAPIレベルの対応表

Android versionAPI LevelCode name
Android 1.01BASE
Android 1.12BASE_1_1
Android 1.53CUPCAKE
Android 1.64DOUNUT
Android 2.05ECLAIR
Android 2.0.16ECLAIR_0_1
Android 2.1.x7ECLAIR_MR1
Android 2.2.x8FROYO
Android 2.39GINGERBREAD
Android 2.3.19GINGERBREAD
Android 2.3.29GINGERBREAD
Android 2.3.310GINGERBREAD_MR1
Android 2.3.410GINGERBREAD_MR1
Android 3.0.x11HONEYCOMB
Android 3.1.x12HONEYCOMB_MR1
Android 3.213HONEYCOMB_MR2
Android 4.014ICE_CREAM_SANDWICH
Android 4.0.114ICE_CREAM_SANDWICH
Android 4.0.214ICE_CREAM_SANDWICH
Android 4.0.315ICE_CREAM_SANDWICH_MR1
Android 4.1.216JELLY_BEAN
Android 4.2.217JELLY_BEAN_MR1
Android 4.3.118JELLY_BEAN_MR2
Android 4.4.219KITKAT
Android 4.4W.220[Android Wear]
Android 5.0.121Lollipop
Android 5.1.122Lollipop
Android 6.023Marshmallow
Android 6.0.123Marshmallow
Android 7.024Nougat
Android 7.1.x25Nougat
Android 8.0.026Oreo
Android 8.1.027Oreo

アクティビティについて

アクティビティはユーザーインターフェースのこと。 画面ごとに独立したアクティビティが存在する。VBでいうフォームモジュールの概念に近い。
Activityのサブクラスとすることで、モーダルダイアログして表示させることも可能である。

アクティビティのビュー

テキストボックスやチェックボックスはアクティビティにビューを設置するより実現できる。
ビューはテキストボックスやチェックボックスなどのコンポーネントを指している。
ビューはグループ化することができ、ビュー同士で親子関係を持たせることができる。

アクティビティの状態

アクティビティには状態の概念が存在する。以下に代表的な状態を示す。
アクティビティの状態説明
アクティブ状態アクティビティスタックで最上位の位置にあるアクティビティ。または、現在操作中の状態である。
一時停止状態他のアクティビティに隠れた状態にあるが、完全動作中。
停止状態メンバの値は保持されている。ただしメモリ不足になれば強制的にメモリは開放される。

アクティビティのイベント

アクティビティのイベント説明
onCerateonCerateは最初に実行されるイベント。このイベント後、onStartが実行される。
onStart,onStoponStartとonStopは、アクティビティが見え隠れするたびに実行される。
onPause,onResumeonPause,onResumeは、一時スリープ状態や、他のアクティビティが表示されるときに実行される。OnStartやOnStopよりも、ひんぱんに実行されるため、軽めの処理を記述する必要がある。
onRestartonRestartは停止状態にあるアクティビティが、再度起動すると実行される。このイベント後、onStartが実行される。
onSaveInstanceStateonSaveInstanceStateメソッドは強制終了されても、メモリ情報等を保護できる。ただし毎回呼び出されるとはかぎらないため、永続保存に用いるべきではない。
onDestroyバックグランド型アプリでは、onCreateで実行され、onDestroyで停止する。

JavaDrive アクティビティのライフサイクル