Androidアプリ開発の基礎(ライフサイクル)

どうも、ゲームは作るものことケーサンヨーシです。 

Androidのアプリ開発をしていると、「ライフサイクル」という言葉に出会います。この「ライフサイクル」は、アプリを作ろうとする人であれば必須の考え方と言っても過言ではありません。

しかも、この「ライフスタイル」という曲者は、一般的なプログラミングの勉強を行っていても出てこない内容です。つまり、アプリを作り始めた時に初めて出てくる内容なのです。

そのため、プログラミングの専門家に「ライフサイクル」とは何かを聞いても答えられません。答えられるのは、アプリの専門家だけです。

そんな、「ライフサイクル」について解説します。

□■□■□

普通、プログラミングの勉強を行う時は、できるだけ簡単でシンプルなものから初めます。代表的なものが、画面に「HelloWorld」という文字を表示するだけのプログラムです。

このプログラムは、どの言語の勉強をしている時でも大体一緒で、〜〜.javaのように拡張子がそのプログラムの名前のファイルの中に、mainのメソッドや関数、クラスが書かれていて、その中に、「HelloWorld」という文字を出す命令が一行だけ書かれているというものです。

main(){

    printf("HelloWorld")

}

プログラムを実行すると、まずmainが呼ばれて、次にmainの中のものが順に実行されるようになっています。

これは、プログラムを完全に1から書いているため、このようにシンプルな流れになります。

問題なのは、これがアプリだと通用しないというです。

たとえば、スマホのアプリを起動している時にホームボタンを押すと、アプリが閉じてホーム画面が表示されます。この動作は、アプリのプログラマーが書いたコードではなく、Android側のコードになります。

このように、アプリはAndroidという既に動いているプログラムの上で動かすプログラムです。そのため、Android側がアプリの実権を握っています。

そのため、main〜というように1からプログラミングしてしまうと、動かしたはいいけど、途中停止さえできないよなアプリになってしまいます。

そこで登場したのが、「ライフサイクル」という概念です。

アプリ側のプログラマーは、Androidの決まりにしたがったメソッドやファンクションを用意し、その中にプログラミングをします。

Android側は、自分が動かしたい時にそれらのファンクションを呼び出すのです。

例としては、以下のようなファンクションがあります。

  • onCreateファンクション・・・アプリが最初に起動した時に呼ばれる。
  • onResumeファンクション・・・アプリが画面トップに戻った時に呼ばれる。
  • onDestoryファンクション・・・アプリが完全に閉じた時に呼ばれる。
  • etc...
これらのAndroid側から呼ばれるファンクションは結構な数があり、しかも、一つの条件の時には複数のファンクションがこの順番で呼ばれるみたいな決まりもあります。

その全てを覚えるのは難しいため、次のような図で表されます。


一番上に、AndroidLanchedと書かれています。まずここからスタートします。

アプリが起動されるとまず、「onCreate」ファンクションが呼ばれます。続いて「onStart」、「onResume」の順で呼ばれます。これでAndroidアプリが起動した状態になります。

ホームボタンを押してホームに戻った場合、「onPause」は呼ばれますが、「onStop」は呼ばれません。「onStop」は、しばらくアプリが呼ばれず、アプリがスリープ状態に入った時に呼ばれます。

そして、アプリをシステムの強制終了によって完全に止める場合には「onDestoroy」が呼ばれます。

他にも、「onPause」が呼ばれた後に再度アプリが表示される時には「onCreate」からではなく「onResume」が呼ばれます。

「onStop」が呼ばれた時には、場合によって「onRestart」が呼ばれることがあります。

□■□

ここまで機能の話をしましたが、じゃあ具体的にどう使うのか考えてみます。

たとえば、アプリ画面が表示されている時にBGMをかけるといったプログラムをしましょう。

bgm.startと書くとBGMがスタートし、bgm.stopと書くとBGMが止まるとします。

仮にbgm.startをonCretate内に書いて、bgm.stopをonDestoroy内に書くと、初めてアプリを起動した時にBGMが流れ始めて、アプリを閉じてもずっとBGMが流れっぱなしになってしまいます。

仮に曲が流れ終わってもう一度アプリを開いたとしても、今度はBGMは流れません。アプリが再度開いた時にはonCreateが呼ばれないので、bgm.startが実行されないからです。

画面が開いている間BGMを流すといった場合には、onResumeとonPauseのそれぞれに処理を書いてあげると上手く動きます。

これが、音楽再生アプリとかだとまた別の場所に処理を書いてあげなければいけません。アプリに画面が閉じたら音楽が止まると困るからです。

「ライフサイクル」はこのように利用します。

□■□■□

というわけで今回は、Androidのライフサイクルについて解説しました。

Androidに限らず、プログラミングの勉強をしていると新しい概念に出会うことが多くあります。

ネットで良い記事に出会えればすぐ理解できるかもしれませんが、そうとも限りません。

そのような時には、とりあえず触ってみて動かしてみるのが手っ取り早いです。新しい概念なので、調べていても分からないことが多いからです。

オブジェクト思考とかはその代表例なので、調べ続けないようにしてみてください。

私の記事が良い記事かどうか??それは疑問符が浮かびますねw

以上、読んでくれてありがとうございます。

このブログの人気の投稿

動画編集ソフト「Shotcut」で縦向きの動画を横向きにする方法。

Audacityで音声部分のみを自動カットする方法

Android Studioでの動的なLayoutの幅と高さの変更方法