Androidアプリを作ってみる #17 -Androidのライフサイクル-

Androdのライフサイクル

何やら大事だな

前回、AndroidというよりJavaの基本的な「クラス」についてやりました。このクラスについて知っておくとAndroidの中身が理解しやすくなります。

クラスについて

Androidアプリを作ってみる #16 -クラスの継承-

2016.12.03

でも、いきなりわからないよ!!

いきなりクラスのことを言われても、何が何やらわからないですよね。そもそもどう入れていいかわからないし、どこでどう使うのかもわからないし。そうですね、だいたいプログラミングにおいて最初に出てくる壁というかみんな悩むところです。

プログラミングの教科書を読んで理論は分かっても、それをどう活かすのかがわからない…。こんな時は「サンプルを眺める」が一番です。サンプルとか他の人のコードを見て真似することから始めましょう。

にゃんこ
真似ねえ。
本Blogの内容を試して、トラブルや故障の原因になったとしても責任は負えません。そんな危ないことはしていませんが、自己責任でお願いしますね。

以前のコードを見てみる

以前までやってたコードは以下ですね。こう見ると全然進んでないな…。

さて、このクラス名は何になるでしょうか。そう、「MainActivity」ですね。このクラス名はAndroid Studioで新規にプロジェクトを作成した際に自動で割り振られた名前です。

変更もできます。

クラス名は?

Activityというのは、WindowsやMacで言うところの「Window」です。スマホの画面で見えているアプリの画面一つの単位をAndroidでは「Activity(アクティビティ)」と言います。「MainActivity」なので、まあ、まさに「アプリのメイン画面」ってことですね。

継承しているのは?

このクラスで継承しているのは…前回やったように継承したクラスは「extends」の後に書いているクラス名なので「AppCompatActivity」ですね。

にゃんこ

そうなりますね。普通ならここで「なんだそら!!」ってなるわけです。でもね、「そんなこと気にしちゃいけないんです」。Android Studioが自動で作ってくれたものなんで、大丈夫なんです。

ま、何なのかというと、このクラスをさっきも出てきた「Activity」として扱いますよ的なクラスなわけですが。知りたい人はこちら→Android Developers
だいたいこう言った公式ページは英文です。でも、結局正確な情報は当たり前ですけど公式ページを見るのが一番です。Google先生で訳してなんとなく理解するでも充分です。
メリ
そ、そんなんでいいの?

onCreateってなんなのよ

オーバーライドであることはわかるね

MainActivity」の中に「onCreate」ってありますね。今までの中にも何度か出てきています。前回の記事でこのメソッドはクラスの機能って言いましたけど、この「onCreate」はちょっと意味合いが違います。

@Override」があるので、継承したクラスから「onCreate」をオーバーライド(上書き)していることになります。



Androidにも一生がある(ライフサイクル)

onCreateは生を受けること

なんだか仰々しいですが…まさにそういうことで「onCreate」は、AndroidのActivityが生成される際に「Android OSが自動で実行してくれる」。「実行してくれる」であって、前回の「Marioクラス」のjump()のようにインスタンス(実体)を作って、自らXXXX.onCreate()なんてやって実行するわけではないんです。ちょっとややこしいですね。

この「onCreate」は、「Activityが生成されるときに1回実行される」メソッドなので、ここにはアプリの初期設定を実行することになります。ユーザーに画面として見えるまでに設定しておきたいこととかね。

他にも色々あるライフサイクル

「onCreate」以外にも色々あります。それが以前も載せたことのあるこの図です。

ライフサイクル

ライフサイクル

以下が、それぞれが実行されるタイミングです。(主なものだけ)

onCreate Activity生成時一回だけ実行
onStart Activityが画面に表示されるとき
onRestart ActivityがonStop()の後に復帰するときに実行される。
このあと、onStart()に遷移
onResume Activityが前面になる時、ユーザーとのやりとりができる状態のとき
onPause Activityがバックグラウンドに移動するとき
onStop Activityが画面から見えなくなるとき
onDestroy Activityが終わるとき

だいたい使うのはこの辺です。とりあえず最初の段階では「onCreate」だけでもなんとかなります。例えば、アプリのなんらかの情報を保存したければ「onPause」でやるとかね。あとはおいおい覚えます。

追加するのは簡単

このライフサイクルメソッドを追加するのはAndroid Studioでは簡単なんです。メニューの「Code」から「Override Methods」を選ぶと、オーバーライドできるメソッド一覧が出てきます。そこから選んでしまえば自動でここまで書いてくれます。

ここでは、「onPause」を選択してみました。

ライフサイクルメソッド以外のオーバーライドもできます。
オーバーライドできるメソッド一覧

オーバーライドできるメソッド一覧

ちゃんと追加されましたね。便利です。処理の中身については、まあ現段階ではまだいいでしょう。

さて、今回はここまで。

メリ
またついていけなかった…。

次の記事

Androidアプリを作ってみる #18 -Surfaceview その1-

2017.01.19

前回の記事

Androidアプリを作ってみる #16 -クラスの継承-

2016.12.03