*

[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】 APIバージョンによる動作の違い

「最近使用したアプリケーション」からの起動 2.x系 -> onNewIntentが呼ばれる 4

記事を読む

no image

【android】設定画面の作成

res/xml/preferences.xml <?xml version=&quo

記事を読む

no image

ダイアログを表示する

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

記事を読む

no image

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

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

記事を読む

no image

[android] モンキーテスト(Monkey Test)を実行する

最近テストの効率化に目覚めました。 モンキーテストは猿にアプリを渡してみてめちゃくちゃな操作をさせ

記事を読む

no image

【andoid】ViewPagerを使う

1. layout.xmlにViewPagerを配置  2. PagerAdapter.jav

記事を読む

no image

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

またもやライフサイクル周りでハマったのですが、Androidのライフサイクルは複雑で困ります。 G

記事を読む

no image

【android】オーバーレイでトップレイヤーにViewを表示する

常にホーム画面や他のアプリより前面にViewを表示する方法です。 前面に透明のViewGroupを

記事を読む

no image

【android】IMEの表示/非表示

//IMEを閉じる InputMethodManager inputMethodManager

記事を読む

no image

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

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

記事を読む

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 ↑