フラグメントを持っていますonCreateView
表示するデータをフェッチするためにバックグラウンドasyn呼び出しを行います。
バックグラウンドコールの結果であるオブジェクトをフラグメントのメンバ変数として保存します。
UIとデータがすべて表示されていて、ホームボタンを押すと背景に移動します。私は、アプリケーションを再開すると、私の断片によって膨らんだUIの中にデータがあります。
これで、次のことについてはわかりません。
1)onSaveInstanceState
にオブジェクトを保存する必要がありますか?
2)どこで復元する必要がありますか? onCreateView
で渡されたバンドルで?
3)データはいつ私のバンドルに保存されますか?私は、今すぐ保存せずにUIからデータを失うことがどのようにわかるのでしょうか?あなたの断片コンストラクタでフラグメントからのインスタンス状態の適切な使用
答えて
、次の行を追加します断片インスタンスが活動を横切って保持されているか否かを 再作成(例えば、構成変更のような)
setRetainInstance(true);
コントロール。
データ(サイズ)によって異なります。
バックスタックにフラグメントを残したいと思いますか?
"home button action"と保持されていないFragmentでは、Parcelableインターフェイスを実装し、onSaveInstanceState()を使用して保存し、onCreateView()/ onCreate()を使用してBundleからデータを復元します。
戻るボタンを認識すると、データが失われます。活動のプロセスが終了し、アクティビティが再作成されたときに フラグメントの状態を復元する必要がある場合には
ホームボタンを押してアプリケーションを開くと、 'onCreateView'は呼び出されません – Jim
それはsetRetainInstance(true)でそのまま動作し、onCreate()はまだ呼び出されます。そして、あなたが保持されたフラグメントを使用する場合、なぜ最初の場所にデータを保存したいのですか? –
はまた活動のように、あなたは バンドルを使用して、フラグメントの状態を維持することができます。 フラグメントのonSaveInstanceState()コールバック の間に状態を保存し、onCreate()、onCreateView()、または onActivityCreated()のいずれかでリストアすることができます。状態の保存の詳細については、 アクティビティ文書を参照してください。
あなたのフラグメントは、表示されるたびにデータをフェッチするように見えます。
非同期フェッチを避けるためにデータを保存する場合は、Bundle
を使用してデータを保存する必要があるonSaveInstanceState
を使用できます。 onCreateView
チェックで次に
savedInstanceState
場合はnull
であり、それがある場合は、非同期はあなたにsavedInstanceState
Bundle
からのデータを再作成するそれ以外の場合は、フェッチありません。
- 1. TFS 2008プロジェクトファイルの不適切な状態
- 2. この状態を書く適切な方法
- 3. オブジェクトの状態/内容を適切に変更するイテレータの使用法(php)
- 4. 休止状態のJDBCトランザクションを休止状態のトランザクションから切り離す
- 5. 設定トラッキング状態を呼び出す適切な場所
- 6. フラグメント状態のアクションバータブを保存する
- 7. クラスインスタンスの適切な使用
- 8. アサートの適切な使用
- 9. GLKBaseEffectの適切な使用
- 10. FileTreeの適切な使用
- 11. データテーブルの適切な使用
- 12. オブジェクトの適切な使用
- 13. strncmpの適切な使用
- 14. call_user_func_arrayの適切な使用
- 15. イベントの適切な使用
- 16. VisualStateManagerを使用してコードから視覚状態に切り替える
- 17. リレーションの状態とリレーションのインスタンス
- 18. 適切な使用法
- 19. DateTimeOffset適切な使用
- 20. デザインパターン:Railsの子状態からの親の集約状態
- 21. シンプルな状態ならば
- 22. アルファベータプルーニングを使用した量子タックタック - 状態の最適な表現?
- 23. C++でのassert()の適切な使用
- 24. Pythonでのmixinsの適切な使用
- 25. WPFでのVirtualizingStackPanelの適切な使用
- 26. .NETでのSqlConnectionの適切な使用
- 27. NSInvocationOperationとNSOperationQueueの適切な使用
- 28. カスタム属性の適切な使用?
- 29. Microsoft Dynamicsの適切な使用
- 30. volatile sig_atomic_tの適切な使用
したがって、onSaveInstanceStateのバンドルに保存できますが、使用できません。 – Jim