SharedPreferences에서 일부 키 / 값 쌍을 제거하는 방법은 무엇입니까?


91

SharedPreferences에서 일부 키 / 값 쌍을 제거하는 방법은 무엇입니까? 나는 그것을 넣고 prefs에서 제거합니다.

답변:


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

여기 편집기는 sharedPreferences 편집기입니다.


11
이 답변에 약간의 추가. 안드로이드 문서에서 : "반환 값에 신경 쓰지 않고 애플리케이션의 메인 스레드에서 이것을 사용하고 있다면, 대신 apply ()를 사용해보십시오."
Sreedevi J 2013

3
@silwar, 왜 apply ()를 commit ()으로 다시 편집 했습니까? 문서는 우리가 반환 값 작업 할 및 제외) (적용 사용 말한다 것을 알고 질문 또는 경우에 응답 맞는도
살림 Mahboubi

13

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();

커밋과 적용을 사용할 때에 대한 좋은 (실제) 설명을 찾아 왔습니다. 이것은 요점을 명확하게 전달합니다.
XMAN


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.