web-dev-qa-db-ja.com

コミットと適用の違いAndroid SharedPreferences

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

commit()apply()はどちらも、共有設定の変更を保存するために使用されます。

Androidライブラリ:

_public abstarct void apply():
_

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

_public abstract boolean commit ():
_

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

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

次の即時アクティビティで同じ共有設定値を使用する必要がある場合、どちらを使用する必要がありますか? Preferenceの値が更新された場合、アプリケーションが再起動されるまで反映されません。

22
Veer Shrivastav

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

22
fedepaol

apply()-戻り値void

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

commit()-boolean値を返します。

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

以下のリンクを参照してください

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

15
Nirali