SharedPreferencesからいくつかのキー/値のペアを削除するにはどうすればよいですか?


90

SharedPreferencesからいくつかのキー/値のペアを削除するにはどうすればよいですか?私はそれを設定から削除しました。

回答:


218
SharedPreferences mySPrefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = mySPrefs.edit();
editor.remove(key);
editor.apply();

ここで、エディターはsharedPreferencesエディターです。


11
この答えへの小さな追加。Androidのドキュメントから:「戻り値を気にせず、アプリケーションのメインスレッドからこれを使用している場合は、代わりにapply()の使用を検討してください。」
Sreedevi J 2013

3
@ silwar、apply()をcommit()に再編集したのはなぜですか?戻り値を処理する場合を除いて、ドキュメントにapply()の使用が記載されており、質問も回答もその場合に
当てはまら

13

commit()呼び出しの戻り値を使用して何かを行う予定がない限り、非同期のapply()呼び出しの代わりに同期のcommit()呼び出しを使用する理由はまったくないことに注意してください。

これをメイン/ UIスレッドから呼び出す場合、commit()が完了するまでUIはブロックされることに注意してください。これは、適用の約5ミリ秒とは対照的に、約100ミリ秒以上かかる場合があります。それほど多くはないように思われるかもしれませんが、アプリケーション全体で継続的に実行すると、確実に合計されます。

したがって、このようなことを計画しているのでない限り、できれば別のスレッドで:

editor.remove(String key); 
boolean success = editor.commit();
if (!success) { 
    // do something 
}

代わりにこれを行う必要があります:

editor.remove(String key); 
editor.apply();

私は、コミットと適用をいつ使用するかについての良い(現実の)説明をずっと探していました。これにより、ポイントが明確に示されます。
XMAN 2018


9

それは非常に簡単です:

private SharedPreferences sharedPreferences() {
    return PreferenceManager.getDefaultSharedPreferences(mContext);
}

public void clearSharedPreferences() {
    sharedPreferences()
            .edit()
            .remove(SOME_KEY_1)
            .remove(SOME_KEY_2)
            .remove(SOME_KEY_3)
            .apply();
}

3

これが私がこの問題に取り組んだ方法です。

まず、SharedPreferenceのインスタンスを次のように作成しました

SharedPreferences mobilePreference;

次に、このsharedPreferenceを次のように使用しました

mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE);

ここで、「in.bhartisoftwares.amit.allamitappsthree」は私のパッケージ名であり、このパッケージ名に対してのみこの共有設定を操作したいので、Context.MODE_PRIVATEを使用しています。

次に、選択したsharedPreference(sharedPreferenceのキーはmobileString)を次のように削除します。

mobilePreference.edit().remove("mobileString").commit();

以下の完全なコードを参照してください。

SharedPreferences mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE);
    mobilePreference.edit().remove("mobileString").commit();

1

情報

sharedprefクラスが拡張されてMapいることを確認するだけで、removeメソッドがあります

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = prefs.edit();
editor.remove(String key);
editor.apply();

ここで、エディターはsharedPreferencesエディターです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.