22

SharedPreferences は、アプリケーション データを Android に保存するために使用されます。

commit()両方ともapply()共有設定の変更を保存するために使用されます。

Androidライブラリで述べたように:

public abstarct void apply():

設定を永続ストレージに同期的に書き込む commit() とは異なり、apply() は変更をメモリ内の SharedPreferences にすぐにコミットしますが、ディスクへの非同期コミットを開始するため、失敗は通知されません。この SharedPreferences の別のエディターが通常の commit() を実行し、apply() がまだ未解決である場合、commit() はすべての非同期コミットとコミット自体が完了するまでブロックされます。

public abstract boolean commit ():

設定の変更を、このエディタから編集中の SharedPreferences オブジェクトにコミットします。これにより、要求された変更がアトミックに実行され、現在 SharedPreferences にあるものはすべて置き換えられます。

commit()これは、 による変更がと比較して瞬時に行われることを意味しapply()ますか? どちらの方がよいですか?

次の直近のアクティビティで同じ共有プリファレンス値を使用する必要がある場合、どれを使用すればよいですか? 私が見たように、Preference の値が更新されても、アプリケーションを再起動するまで反映されません。

4

2 に答える 2

22

Commit()瞬時ですが、ディスク書き込みを実行します。UIスレッドを使用している場合は、apply()非同期であるを呼び出す必要があります。

于 2013-03-11T09:51:55.200 に答える
15

apply() - void を返します

apply() は 2.3で追加され、成功または失敗を示すブール値を返さずに保存します。

commit() -ブール値を返します。

commit()は、保存が機能する場合は true を返し、そうでない場合は false を返します。apply()Android 開発チームが戻り値にほとんど誰も気付いていないことに気付いたので追加されたので、apply の方が高速です。

以下のリンクで参照できます

共有設定の commit() と apply() の違いは何ですか

于 2013-03-11T09:55:31.617 に答える