2013-03-11 7 views
19

SharedPreferencesは、Androidにアプリケーションデータを保存するために使用されます。Android SharedPreferencesでのコミットと適用の違い

commit()apply()の両方を使用して、共有設定の変更を保存します。 Androidのライブラリに述べたように

public abstarct void apply(): 

(コミットとは異なり)、同期永続 ストレージに出て好みを書き込み、(適用)は、すぐにメモリ内の SharedPreferencesへの変更をコミットするが、 ディスクへの非同期コミットが開始され、失敗の通知は表示されません。 の別のエディタでこのSharedPreferencesを実行すると、apply()がまだ有効でないうちにcommit()がブロックされ、すべての非同期コミットが完了するまでコミットされます(コミット自体と同様に )。

public abstract boolean commit(): 

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

これはcommit()によって行われた変更はapply()と比較して、インスタントであることを意味するのでしょうか?どちらがいいですか?

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

答えて

20

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

+1

以下を参照することができます..!正確に何ですか。私は初心者です。 –

+0

UIスレッドはレイアウトを設定し、例えばonClickリスナーを設定するメインスレッドです。 – staaar

+0

ディスクの書き込みなどの時間がかかる操作では、uiのレスポンスが低下します – fedepaol

13

(適用) - (適用ボイド

を返す)が、それは、成功または失敗を示すブール値を戻すことなく保存し、2.3に添加しました。

(コミット)は - ブール値を返します。

commit()は、保存が機能する場合はtrueを返し、それ以外の場合はfalseを返します。アンドロイドデベロッパーチームがほとんどの人に戻り値を通知していないことに気づいたので、apply()が追加されました。

あなたは、私がUIスレッドの意味を取得DINTリンク

What's the difference between commit() and apply() in Shared Preference

関連する問題