*

[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

以上。

関連記事

no image

【android】DrawableとBitmap、リソースの相互変換 

Resource → Bitmap Bitmap bm = BitmapFactory.dec

記事を読む

no image

インテント

基本 //任意のアクティビティの起動 Intent intent = new

記事を読む

no image

【android】処理時間を計測する

パフォーマンスのリファクタリングを行うには処理時間の計測がかかせません。 SDK標準のクラスを使っ

記事を読む

no image

【android】バイブレーションを使う

必要なファイル MyApp.manifest MyApp.java MyApp.m

記事を読む

no image

ダイアログを表示する

カスタムアラートダイアログ private void showCustomAlert(A

記事を読む

no image

【android】標準の設定画面を作る

設定画面のテンプレートです。 検索一発クンのコードから抜粋しました。 チェックボックス、リス

記事を読む

no image

【android】アプリ内課金を実装する

アプリ内課金のサンプルコードを解析します。 参考URL 公式API Android

記事を読む

no image

【android】stringsリソースにパラメータを埋め込む

●strings.xml %n$x n : 引数に渡す際の順番。n番目の引数。 x

記事を読む

no image

【android】 webviewでassetsのリソースを使用する

webviewでassets内のリソースにアクセスするには file:///android_a

記事を読む

no image

【android】 setOnClickListener(false)が効かない

間違いその1 OnClickListenerが登録されているViewにsetClickable

記事を読む

Message

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

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

no image
知らないと損をする6つのライセンスまとめ

オープンソースやフリーウェア、フリー素材などが巷に溢れ、それらを利用す

no image
ガリレオ:ニュースブラウザをリリースしました。

概要 ガリレオはニュースを読んだり、検索する機能に特化したブラウザア

no image
【android】Activityとプロセスのライフサイクル

またもやライフサイクル周りでハマったのですが、Androidのライフサ

→もっと見る

PAGE TOP ↑