[android] ActivityとFragmentのライフサイクルいろいろ
公開日:
:
最終更新日:2014/02/24
android
Fragmentを使い始めてライフサイクル関係でハマることがあったので備忘録。
FragmentA,Bをlayout.xmlに記述。
まとめ
・onStart以降はActivityから発火
・onPause以降はActivityは最後に発火
・全てのFragmentの初期化完了をonResumeFragments()でやろうと思っていたけどonPause()の後にも呼ばれているのでやめておく。
・Viewのサイズが決定するのはonWindowFocusChanged()。
・アプリ終了時はonSaveInstanceState()が呼ばれない
・サスペンド時はonSaveInstanceStateが真っ先によばれる。
・onSaveInstanceState以降にFragmentTransaction.commit()を呼ぶとIllegalStateExceptionで落ちる。
・onNewIntentの呼ばれるタイミングが変態
(onStart -> onNewIntent -> onResume)
ホーム -> 起動
MainActivity : onCreate
FragmentA : onAttach
FragmentA : onCreate
FragmentA : onCreateView
FragmentB : onAttach
FragmentB : onCreate
FragmentB : onCreateView
FragmentA : onActivityCreated
FragmentA : onViewStateRestored
FragmentB : onActivityCreated
FragmentB : onViewStateRestored
FragmentA : onStart
FragmentB : onStart
MainActivity : onStart
MainActivity : onResume
FragmentA : onResume
FragmentB : onResume
MainActivity : onResumeFragments
MainActivity : onWindowFocusChanged
起動完了 -> 終了
MainActivity : onPause
MainActivity : onResumeFragments
MainActivity : onWindowFocusChanged
FragmentA : onPause
FragmentA : onStop
FragmentB : onPause
FragmentB : onStop
MainActivity : onStop
FragmentA : onDestroy
FragmentA : onDetach
FragmentB : onDestroy
FragmentB : onDetach
MainActivity : onDestroy
起動中 -> サスペンド
FragmentA : onSaveInstanceState
FragmentB : onSaveInstanceState
MainActivity : onSaveInstanceState
MainActivity : onPause
MainActivity : onResumeFragments
MainActivity : onWindowFocusChanged
サスペンド -> 再起動
FragmentA : onPause
FragmentA : onStop
FragmentB : onPause
FragmentB : onStop
MainActivity : onStop
FragmentA : onStart
FragmentB : onStart
MainActivity : onStart
MainActivity : onResume
FragmentA : onResume
FragmentB : onResume
MainActivity : onResumeFragments
MainActivity : onWindowFocusChanged
サスペンド -> 起動 (android:launchMode=”singleTask”)
FragmentA : onStop -> サスペンド
MainActivity : onStop
MainActivity : onNewIntent
MainActivity : onStart
FragmentA : onStart
MainActivity : onResume
FragmentA : onResume
タスクスイッチ -> サスペンド -> 起動 (android:launchMode=”singleTask”)
FragmentA : onStop -> タスクスイッチ
MainActivity : onStop
MainActivity : onCreate
FragmentA : onCreate
MainActivity : onStart
FragmentA : onStart
MainActivity : onNewIntent
MainActivity : onResume
FragmentA : onResume
以上。
関連記事
-
ダイアログを表示する
カスタムアラートダイアログ private void showCustomAlert(A
-
アプリ間連携 Intentfiler
ブラウザの共有からURLを受け取る。 Manifest.xmlのURL受け取り先のactivity
-
【android】Activityとプロセスのライフサイクル
またもやライフサイクル周りでハマったのですが、Androidのライフサイクルは複雑で困ります。 G
-
【android】アプリ内課金を実装する
アプリ内課金のサンプルコードを解析します。 参考URL 公式API Android
-
【android】非同期処理
Androidで非同期処理、マルチスレッドを処理するスニペット。 AndroidのスレッドはUIス
-
【android】 setOnClickListener(false)が効かない
間違いその1 OnClickListenerが登録されているViewにsetClickable
-
[android] JSONのパースにかかる時間
リストデータなんかを保存したいというのはよくある要件だと思います。 DBは面倒だしカラム毎に集計す
-
【android】 Android4.1のserviceでdefaultPreferenceがおかしい
【現象】 ActivityでdefaultPreferencesで保存したデータがservice内
-
[android] モンキーテスト(Monkey Test)を実行する
最近テストの効率化に目覚めました。 モンキーテストは猿にアプリを渡してみてめちゃくちゃな操作をさせ
-
【android】処理時間を計測する
パフォーマンスのリファクタリングを行うには処理時間の計測がかかせません。 SDK標準のクラスを使っ