*

[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】処理時間を計測する

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

記事を読む

no image

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

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

記事を読む

no image

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

Resource → Bitmap Bitmap bm = BitmapFactory.dec

記事を読む

no image

【android】IMEの表示/非表示

//IMEを閉じる InputMethodManager inputMethodManager

記事を読む

no image

ダイアログを表示する

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

記事を読む

no image

【android】ハードウェアキー入力を検出する

Activityを継承したクラスで下記を記述します。 public boolean

記事を読む

no image

【android】ネットワークの接続状況を確認する

コードから接続状況を確認。 ConnectivityManager co

記事を読む

no image

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

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

記事を読む

no image

【android】 APIバージョンによる動作の違い

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

記事を読む

no image

【android】非同期処理

Androidで非同期処理、マルチスレッドを処理するスニペット。 AndroidのスレッドはUIス

記事を読む

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 ↑