基本中の基本だと思われますが、
Androidアプリ開発時の「ライフサイクル」ネタです。
Fragments | Android Developers
現状、API14以降が7割を越えてきた今、
きっと困惑している初心者なあたしとそんな開発者向け。
確認したのは、AndroidStudioでデフォルトの
Activityテンプレートとして用意されている
「Scrollable Tabs + Swipe」
で確認してみましたよ。
Launcherから起動した後、Backキーで終了
Activity.onCreate()
Activity.onStart()
Activity.onResume()
Fragment.onAttach()
Fragment.onCreate()
Fragment.onCreateView()
Fragment.onActivityCreated()
Fragment.onStart()
Fragment.onResume()
(※ ここでBackキー押下)
Fragment.onPause()
Activity.onPause()
Fragment.onStop()
Activity.onStop()
Fragment.onDestroyView()
Fragment.onDetach()
Fragment.onDestroy()
Activity.onDestroy()
Launcher から起動して、ホームボタンを押す
Activity.onCreate()
Activity.onStart()
Activity.onResume()
Fragment.onAttach()
Fragment.onCreate()
Fragment.onCreateView()
Fragment.onActivityCreated()
Fragment.onStart()
Fragment.onResume()
(※ここでHOMEボタン)
Fragment.onPause()
Fragment.onSaveInstanceState()
Fragment.onStop()
Activity.onStop()
最近使ったアプリから復帰
Activity.onRestart()
Fragment.onStart()
Activity.onStart()
Activity.onResume()
Fragment.onResume()
Laucherから起動後、画面回転、戻るボタンで終了
Activity.onCreate()
Activity.onStart()
Activity.onResume()
Fragment.onAttach()
Fragment.onCreate()
Fragment.onCreateView()
Fragment.onActivityCreated()
Fragment.onStart()
Fragment.onResume()
(画面回転)
Fragment.onPause()
Activity.onPause()
Fragment.onSaveInstanceState()
Activity.onSaveInstanceState()
Fragment.onStop()
Activity.onStop()
Fragment.onDestroyView()
Fragment.onDestroy()
Fragment.onDetach()
Activity.onDestroy()
Fragment.onAttach()
Fragment.onCreate()
Activity.onCreate()
Fragment.onCreateView()
Fragment.onActivityCreated()
Fragment.onStart()
Activity.onStart()
Activity.onRestoreInstanceState()
Activity.onResume()
Fragment.onResume()
(戻るボタンを押す)
Fragment.onPause()
Activity.onPause()
Fragment.onStop()
Activity.onStop()
Fragment.onDestroyView()
Fragment.onDestroy()
Fragment.onDetach()
Activity.onDestroy()
実際は、複数のFragmentがあるのですがそれは省略。
まとめ
・FragmentとActicity同名のメソッドについては基本的に
開始系 Activity->Fragment
終了系 Fragment->Activity
の順番で処理される。
「生まれるときは親(Acticity)が先、消えるときは子(Fragment)が先」
・onSaveIntanceState() も消える前の処理なので子が先。
・Activity.onRestart() 時に Fragment.onStart() が呼ばれる。
とりあえず押さえておこうと思ったので。
関連ワード: Android・AndroidStudio・開発・fragment・lifecycle・pager・フラグメント・ライフサイクル