SharedPreferences에서 일부 키 / 값 쌍을 제거하는 방법은 무엇입니까? 나는 그것을 넣고 prefs에서 제거합니다.
답변:
SharedPreferences mySPrefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = mySPrefs.edit();
editor.remove(key);
editor.apply();
여기 편집기는 sharedPreferences 편집기입니다.
commit () 호출의 반환 값으로 무언가를 할 계획이 없다면 비동기 apply () 호출 대신 동기 commit () 호출을 사용할 이유가 전혀 없다는 점에 유의해야합니다.
main / UI 스레드에서 이것을 호출하는 경우 commit ()이 완료 될 때까지 UI가 차단된다는 점에 유의하십시오. 적용시 약 5ms에 비해 약 100ms 이상 걸릴 수 있습니다. 그다지 많지 않은 것 같지만 응용 프로그램 전체에서 계속 수행하면 확실히 합산됩니다.
따라서 이와 같은 작업을 계획하지 않는 한 별도의 스레드에서 수행 할 수 있습니다.
editor.remove(String key);
boolean success = editor.commit();
if (!success) {
// do something
}
대신 다음을 수행해야합니다.
editor.remove(String key);
editor.apply();
SharedPreferences.Editor.remove(key)
commit();
매우 간단합니다.
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();
}
이 문제를 해결 한 방법은 다음과 같습니다.
먼저 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();