2013-02-18 13 views
7

onStoponSaveInstanceStateにはどうなるべきか混乱しています。しかし、ユーザーが(例えばドラフトEメールのように)離れるときに、このような変更は永続的に保存されることを期待する場合にのみ、アンドロイド - onPause、onStop、onSaveInstanceStateに格納されたデータ

未保存の変更をコミットします - 例えば、Androidのドキュメントはについては があると言います。あなたは、このようなデータベースに情報を書き込むような大きな、より多くのCPUを集中シャットダウン操作を実行するために)(onStop使用する必要があります

からonStopについては

onSaveInstanceState

のためにあなたの活動は、このような活動で、ユーザーの進捗状況を追跡メンバ変数として、あなたが復元したい複数の状態情報を持っているかもしれません。

これらの3つの点は基本的にフォームや電子メールのような情報を格納することを指摘していますか?どの方法でそれを救うべきですか?

答えて

6

永続化したいものはすべてonPause()に保存する必要があります.が返された後、一部のAndroidバージョンではあなたのアプリはキラーブルであるとみなされるためです。

onPause()が比較的頻繁に発生するため、同じアクティビティのonResume()の状態を保存しない可能性がある多くの状況下では、やや不明瞭な区別が行われています。したがって、誰もがあなたが高価な操作を行う前に、あなたが二度思考してほしいとonPause()

フォームデータの保存に関するご質問は、入力フィールドがフォーカスを失ったときに永続的にすることができます。ユーザーがアプリケーションを停止してもう一度起動した後でも同じフォームデータが表示されることを完全に意図している場合。

+0

'onStop()'は、2016年1月現在のAndroidデバイスの96.8%を占めるHoneycomb(3.0)以降に呼び出されることが保証されています。したがって、データを保存するために 'onPause() 'より' onStop今。 –

+0

@VickyChijwaniソフトウェアエンジニアリングの観点からは、あなたのアプリのメタデータ(明示的に言及していない)で明示的にAndroid 3.0が必要な場合を除き、 'onPause()'に対する_streferring_ 'onStop()は受け入れられません。 –

+0

私はAndroid 3.0以降のアプリを作っています。私が 'onStop()'を好むもう(議論の的になる)理由は、[onPause() 'docs](http://developer.android.com/reference/android/app/Activity.html#onPause %28%29): "アクティビティBがアクティビティAの前で起動されると、AのonPause()が戻るまで... Bは作成されませんので、ここで何もしないでください。もちろん、ライフサイクル全体の文書はまだかなり混乱しているので、これは決定的なものではありません。 –

2

2016年以降に来る人は@Class Stackerの回答が時代遅れであることに注意してください。 http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle(「ないkillable状態で」のためのCtrl + F):具体的には、onStop()は、ここでのライフサイクルのマニュアルを参照してください

2016年1月のよう96.8% of Android devicesを占める、アンドロイド3.0(ハニカム)以来と呼ばれることが保証されています

UPDATE:これはもちろんコメントの中で指摘されているとおり、アプリはAndroid 3.0以上に限定されている必要があります。

+0

このことをもう一度明らかにするには(上記も)、パーセンテージ自体は十分ではありません。 'onPause()'で永続性を扱わないアプリケーションは、Android 3以上に厳密に制限されていなければなりません。 –

関連する問題