Android Studio:ライフサイクルについてのメモ

https://developer.android.com/guide/components/activities/activity-lifecycle?hl=ja

公式のライフサイクルの画像をみてどういう順番で関数が呼ばれるのかはわかった。

しかし実際にどういう状況でよばれるのか理解できていなかった。(今も)

一応しらべた(Log.i と Intent)

画面切り替えが Intent で別アクティビティーに遷移したり戻ったりするだけだったので onResume と onStart が同じになった。

クッソ大事なこと

Application の onCreate() は Activity のよりもはやい。ただめんどくさかったので起動時のことしか調べてない。

onCreate() アプリ起動時
onStart() 画面表示するとき
onResume() onStart() と同じだったけどたぶんもっと細かい操作の時によばれてるはず。
onPause() 画面遷移時
onStop() 画面遷移時
onRestart() onStop() を読んでから画面を再表示するとき。
onDestroy() アプリを落とすとき。

アプリ起動時は
(Application) onCreate() → (元のアクティビティー) onCreate() → onStart() → onResume()

画面遷移時
onPause() → onStop()

再度元の画面に戻ってくるとき
onRestart() → onStart() → onResume()

アプリを落とすとき
onPause() → onStop() → onDestroy()

 

なんでこんなことを調べようかと思ったかというと finish() がどういう扱いなのか知りたかったから。finish() は onRestart() → onStart() → onResume()

これに遷移先の画面のログも混ぜてみた。

Intent(元のアクティビティー,遷移先アクティビティー) で遷移したとき

(元のアクティビティー) onPause() →

(遷移先アクティビティー) onCreate() → onStart() → onResume() →

(元のアクティビティー) onStop()

間に遷移先のアクティビティーの関数が三つ挟まる感じ。

遷移先アクティビティーから元のアクティビティーに戻るときに Intent する方法と finish() する方法でも変わってくる。

finish() で元の画面に遷移すると onDestroy() までいくので次に遷移先の画面を起動する際に onCreate() が呼ばれ、
Intent(遷移先アクティビティー,元のアクティビティー) だと次に遷移先の画面を起動するときに onRestart() がよばれる。

 

もうぐちゃぐちゃやほんま。これに Coroutine 混ざるってマジ?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA