LoginSignup
8
6

More than 5 years have passed since last update.

Androidのライフサイクルについて

Posted at

Andorid開発をしているとよく聞くライフサイクルですが、どんなものか分からないと、どのメソッドにどんな実装をしないといけないのかわからない、あるいは間違えるということが起こるので、まとめたいと思います。

無題.png

上記の画像がライフサイクルの図です。

Activityはユーザーができる画面を提供します。
Viewの表示やボタンをクリックしたときのアクション等を記載します。

Activityは作られて破棄されるまで状態が変化して、この変化がライフサイクルです。
画像に記載されているonCreate()やonStart()などはコールバックメソッドと呼ばれていて、私たちが実装するコードではoverrideして使われます。
実際にソースコードを見てみると、onCreate()やonStart()が存在していると思います。

onCreate

画面が表示されるとき行われる処理です。
画面の初期化が行われます。
どの画面を表示させるかの設定等を行います。

onCreateの処理が完了したら、onStart()が呼ばれます。

ソースコードでは下記のような処理を行います。

setContentView(R.layout.activity_task_edit)

onStart

Activityが開始された時に呼ばれます。
この時点ではActivity生成されたがユーザーには見えない状態です。

onStart()ではデータの読み込み開始などを記述します。データの読み込みの必要がない場合は特に実装はしないかと思います。

onResume

Activityが前面にきて、ユーザーとのやりとりを始められるようになる直前に呼び出されます。
画面が使えるようになります。

onPause

他のアプリが前面にきて、Activityがバックグラウンドに隠れるときに、呼ばれます。
データの変更をコミットしたり、CPU を消費する可能性のあるその他の動作を停止したりする際に使用されます。

Activityが前面に戻るときは onResume() が後に続き、Activityが非表示になるときは onStop() が後に続きます。

onStop

画面がユーザーから見えなくなったときに呼び出されます。
ホーム画面に戻ったり、画面遷移したり、アプリが見えなくなるときに呼ばれます。

onDestroy

Activityが破棄される直前に呼ばれます。
DBの接続を終了したりはここで行います。

onRestart

ActivityがonStop()の後、復活するときに呼び出されます。
例えば、端末がスリープ状態になり、再び始めたり、端末のホームボタンを押して起動中のアプリを再び始めるときに使われます。

今回はざっくりとした概要になってしまいましたが、また気になったことがあれば、思考の整理がてら記載したいと思います。

参照

Android Developers -- https://developer.android.com/guide/components/activities?hl=ja

(ライフサイクルの図は上記サイトにあります)

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6