如何从SharedPreferences中删除一些键/值对?

Dam*_*mir 83 android

如何从SharedPreferences中删除一些键/值对?我已经把我和我从prefs中删除了.

Yas*_*mar 201

SharedPreferences mySPrefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = mySPrefs.edit();
editor.remove(key);
editor.apply();
Run Code Online (Sandbox Code Playgroud)

这里的编辑器是sharedPreferences编辑器.

  • 这个答案的一小部分.从android文档:"如果你不关心返回值,并且你从应用程序的主线程中使用它,请考虑使用apply()代替." (11认同)
  • @silwar,你为什么要将apply()重新编写回commit()?知道文档说使用apply()除非我们想要使用返回值,问题或答案都不适合这种情况 (3认同)

SBe*_*413 12

需要注意的是,除非您计划使用commit()调用的返回值执行某些操作,否则绝对没有理由使用同步commit()调用而不是异步apply()调用.

请记住,如果您从main/UI线程调用它,则UI将被阻塞,直到commit()完成.这可能需要大约100毫秒,因为申请大约需要5毫秒.这似乎并不多,但如果在整个应用程序中不断完成,它肯定会加起来.

所以,除非你打算做这样的事情,否则希望在一个单独的线程上:

editor.remove(String key); 
boolean success = editor.commit();
if (!success) { 
    // do something 
}
Run Code Online (Sandbox Code Playgroud)

你应该这样做:

editor.remove(String key); 
editor.apply();
Run Code Online (Sandbox Code Playgroud)


Sha*_*wat 9

SharedPreferences.Editor.remove(key) 
commit();
Run Code Online (Sandbox Code Playgroud)


Ant*_*raz 8

这很简单:

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();
}
Run Code Online (Sandbox Code Playgroud)