season_cycle_image

【Android】入門!Activityのライフサイクルとは?

#Android
written by じゅんじゅん

こんにちは。Androidエンジニアじゅんじゅんです。

コロナ禍の引きこもりが続いておりますね。
緊急事態宣言が解除されたとはいえ、なかなか外出しにくい状況だと思います。

そんな中、新入社員の方・新しく開発言語を勉強される方でAndroid開発の勉強され始めた方もいるのではないでしょうか。

なので今回は、Android開発の基本中の基本とも言える「Activityのライフサイクル」について解説していきたいと思います。

Activityってなんぞ?

Activityというのは、Androidのアプリを作るうえで一番基本的な構造になります。
AndroidStudioを使用して開発していくことになりますが、
プロジェクトを作成した際に、(名前変更などしなかった場合)一番初めに表示される画面も「MainActivity」となります。

端的に言えば「画面」です。
まれに画面がないアプリなども作成することは可能ですが、一旦こちらの認識で問題ないと思います。

Android Developer – アクティビティの概要

ライフサイクルについて

Androidアクティビティには、ライフサイクルという考えが用意されています。

ライフサイクルがあることによって、使用できるメモリリソースの管理や
バックグラウンド⇔フォアグラウンドの操作をうまく制御してくれています。

アプリ起動後のActivityには、ライフサイクルにのっとって様々な状態が存在します。

その様々な状態を表したイメージが以下のものです。

android_activity_lifecycle

こちらのイメージは、Android公式で解説されているものを日本語に翻訳したものを私の方で作成しました。

公式(英語)は以下になります。

Android Developer – Activity

Activityのライフサイクルは上記イメージ図のようになっておりまして
アプリを起動した際は、文字通り最上部の「アプリの起動」からActivityのライフサイクルが開始されます。

図の各部を解説しますと、

・色付きの箇所
 →システム上の動き

・角丸の四角箇所
 →Activityの基本となる関数(メソッド)

・四角の箇所
 →ユーザに対する動き

となります。

ライフサイクルの動きを実動作で解説

アプリ起動時

HOME画面からアプリ起動をさせ、アプリの初期画面が表示されるまでは
onCreate()→onStart()→onResume()という、以下イメージの流れになります。

android_lifecycle_lanch_app

アプリ起動後、端末HOMEボタンを押下し、HOME画面へ戻る

端末HOMEボタンを押下した場合は、
onPause()→onStop()となり、端末メモリに余裕がある限りはバックグラウンドで状態が保持されます。

バックグラウンド待機状態が長時間継続し
OSが不要と判断した場合には、onDestroy()を通過しActivityを終了します。

android_lifecycle_back_to_home

HOME画面へ戻った後、再度アプリを起動した場合

HOME画面へ遷移後、バックグラウンドに待機しているアプリを再度起動した場合は
onRestart()→onStart()→onResume()を経由しActivityが再度実行中へ切り替わることで
画面が表示されます。

イメージ内赤線の導線になります。

 

android_lifecycle_back_to_app

 

最後に

今回ざっくりとですが、Activityのライフサイクルの導入部分について書かせていただきました。

次回は、ライフサイクル内の各関数(onCreate()、onResume())が
それぞれどのような役割で用意されているのかという部分について書いていきたいと思います。

また、以前にもAndroid関連の記事を書いておりますので
良かったら見て行ってください!!

JavaからKotlinに移行したAndroidエンジニアが困った!!スコープ関数について解説してみる
https://goat-inc.co.jp/blog/735/
【Kotlin】ConstraintLayoutの相対的なView指定方法【Android】
https://goat-inc.co.jp/blog/1048/

 

新入社員の方にかけれる言葉とすれば、、、
嫌いにならない程度に勉強し、学んでいくことが大切だと思います。
あんまり気合い入れすぎてもね、、、

休むことで脳がリフレッシュすることもあるので(;´д`)

ではでは。