Android

Androidのアプリケーションの仕組み

新型コロナウィルスの自粛期間中に暇だったので掃除をしていたところ、昔のAndroidスマートフォンを発掘しました。まだ電源も入るし、WiFiにつなげばインターネットも使えるのでこのスマートフォンを使って何かしたいなと思っています。
そこで、この機にAndroidのプログラミング技術について勉強していきます。

Androidとは

ここではAndroidの生い立ちと特徴について説明します。

Androidの誕生

2007年11月にGoogleで開発された携帯電話向けのプラットフォームです。当時は携帯電話(当時はまだガラケー)の利用者が急激に増え、そこに目を付けたのでしょう。

そこから数年でAndroidを搭載したスマートフォンが発売され、一気に勢力を拡大し、携帯電話=スマートフォンという確固たる地位を築き上げるのに一役買いました。特にAndoridはiPhoneとは違い様々なメーカーが開発したハードウェア上で動作します。そのため、ハードウェアごとによる違いを吸収できる仕組みがあることでも有名です。

またバージョンごとにCupcakeやDonutなどお菓子の名前のコードネームとして使うことも有名でした。最新のver.10からはこのコードネームは廃止されたそうです。

Androidはどうやってつくるのか

AndoridはJava言語ベースで開発し、ビルドするためにJDKが必要となります。Javaは仮想マシン(JVM)として動作することにより、ハードウェアに左右されないマルチプラットフォームを実現していました。Androidも同様の概念で仮想マシンとして動作するのですが、Javaではなく、Andorid OS上でのみDalvik仮想マシンとして動作します。

このJava仮想マシンとDalvik仮想マシンはどう違うのかというとコンパイルしたバイナリファイルが違います。

Java仮想マシンはパソコン上で動作していましたので、スマートフォンに比べるとメモリやディスクの容量を潤沢にありますが、スマートフォンはそうではありません。そのため、Java仮想マシン上での実行ファイルであるバイナリファイルよりもさらに不要・冗長な処理等を削り、コンパクトにしたものをAndroid OSでは使います。

Androidのアプリケーション

AndroidのアプリケーションにはJavaやVB等のアプリケーションとは違う考えがありますので、そちらについても触れていきます。

Androidアプリの構成

Androidアプリは大きく分けて”アクティビティ“と”サービス“の2つのコンポーネントの組み合わせでできています。

アクティビティとは、一言でいうとAndroidアプリの画面を構成するコンポーネントで、画面上でメッセージを表示させたり、ボタンを配置するための大きな器となります。
一方のサービスはバックグラウンドで動くコンポーネントで、例えばネットサーフィンしながら、スマートフォン内の音楽を再生する場合などで使っています。

どちらか片方だけで良いのではなく、作りたいアプリケーションを構成する上でどのようにアクティビティとサービスを組み合わせていくかを考えるのも大切なことです。

Androidアプリのライフサイクル

Androidではアプリケーションの起動から終了までに間を段階的に状態を定義し、その期間をライフサイクルとしています。

Androidはリソースを効率的に扱うためにライフサイクルを定め、コンポーネントの生成や破棄などを状態に合わせてチェックポイントを用意しています。基本的にはアプリケーションの起動・実行中・破棄の3つのチェックポイントとなりますが、アクティビティを例にとるとチェックポイントはもっと多くなります。

お借り先:https://www.javadrive.jp/android/activity/index2.html

まとめ

Androidアプリのきほん

・ハードウェアに依存しないマルチプラットフォーム
・Jaba言語ベースで開発するが、よりリソース消費を抑えるDalvik仮想マシンを用意している
・アクティビティとサービスの二つが最小コンポーネント
・リソースを効率よく使うためライフサイクルがある

お薦め書籍