4

Google のアプリ レビューの 1 つを見ていましたが、彼らは保存ボタンのあるこの人のアプリを食い物にしていました。終了する前に保存しないと、ダイアログがポップアップ表示されました。彼らは、Androidアプリは保存するだけで、ユーザーを煩わせるべきではないと言いました.

フラグメントがあり、いくつかのフィールドがあり、データを SQLite データベースにいつ保存するかを決定する必要があります。onFocusChangeイベント経由で各フィールドの出口を節約しようと思っていましたか?それとも、それはあまりにも頻繁ですか?おそらくフラグメントのonPauseイベントですか?いつ保存する必要がありますか (特定のイベントをお願いします)?

4

2 に答える 2

3

Fragmentsライフサイクルに関してはよく似ていactivitiesます。永続onPause()的な状態を保存するのに適切な場所です。後でonPause()手遅れになり、データの損失につながる可能性があります。「インプレース編集」ユーザーモデルを使用することをお勧めします。つまり、編集内容をすぐに保存します。この場合、ユーザーが入力フィールドを切り替えたときにデータを保存することをお勧めします。Fragmentこれにより、 /がシステムによって強制終了された場合のデータ損失が防止Activityされます。状態を保存するのに数秒かかると思われる場合は、でも使用できIntentServiceますonPause()。あなたのシナリオではAsyncTask、ユーザーが入力フィールドを切り替えたときにデータベースの更新を実行します。おそらく、変更が実際に発生したかどうかを検出します。

編集:を使用している場合は、の代わりにAsyncQueryHandlerContentProviderの使用を検討してください。AsyncTask

于 2012-07-21T20:55:57.273 に答える
1
public void onDestroy()

Called when the fragment is no longer in use. This is called after onStop() and before onDetach().

私はおそらくそれを使用します。ユーザーがそのフラグメントの使用を終了したことを意味します。その方法またはあなたの方法でそれを行うことの短所はわかりません。

于 2012-07-21T20:05:25.077 に答える