답변:
특정 값을 제거하려면 SharedPreferences.Editor.remove () 다음에commit()
모두 제거하고 SharedPreferences.Editor.clear()
그 뒤에commit()
반환 값에 신경 쓰지 않고 응용 프로그램의 기본 스레드 에서이 값을 사용하는 경우 apply()
대신 사용 을 고려하십시오 .
내 해결책 :
SharedPreferences preferences = getSharedPreferences("Mypref", 0);
preferences.edit().remove("text").commit();
"text"
.
모든 환경 설정 제거 :
SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().clear().commit();
단일 환경 설정 제거 :
SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().remove("KeyName").commit();
KeyName
?
매번 제거 할 필요가없는 경우 다음에서 수동으로 제거 할 수 있습니다.
설정-> 응용 프로그램-> 응용 프로그램 관리-> (앱 선택)-> 데이터 지우기 또는 제거
최신 버전의 Android :
설정-> 응용 프로그램-> (앱 선택)-> 저장소-> 데이터 지우기 및 캐시 지우기
한 줄에 Android 공유 환경 설정 삭제 :-)
context.getSharedPreferences("YOUR_PREFS", 0).edit().clear().commit();
또는 apply
비 차단 비동기 작업의 경우 :
this.getSharedPreferences("YOUR_PREFS", 0).edit().clear().apply();
모든 솔루션이 완전히 작동하지 않거나 죽었을 것 같습니다
활동에서 모든 SharedPreferences를 지우는 방법
PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit().clear().apply();
onCreate 후 기본 활동에서 이것을 호출하십시오.
참고 * .apply()
대신에 사용 했습니다 .commit()
. commit ()을 자유롭게 선택할 수 있습니다.
루팅 된 전화 없이도 adb 셸을 사용하여이 작업을 수행 할 수 있습니다. 유일한 문제점은 앱을 디버깅 할 수 있어야한다는 것입니다.
run-as <your package name> <command>
예를 들면 다음과 같습니다.
run-as com.asdf.blah rm /data/data/com.asdf.blah/databases/myDB.db
또는 위의 작업을 수행 할 수 있지만 명령없이 앱 패키지 루트로 이동하여 앱 컨텍스트에서 더 많은 명령을 실행할 수 있습니다.
run-as
. 당신은 내가 3 년 후에 이것을 발견했을 것이라고 생각할 것입니다 ...
Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit();
editor.clear();
editor.commit();
클래스 정의에서 :
private static final String PREFERENCES = "shared_prefs";
private static final SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(PREFERENCES, MODE_PRIVATE);
수업 내부 :
public static void deleteAllSharedPrefs(){
sharedPreferences.edit().clear().commit();
}
기본 설정에서 키 값 쌍을 제거하려면 다음을 쉽게 수행 할 수 있습니다.
getActivity().getSharedPreference().editor().remove("key").apply();
공유 환경 설정을 쉽게 조작 할 수있는 라이브러리도 개발했습니다. 다음 링크를 찾을 수 있습니다
모든 클래스에서 모든 SharedPreference를 중앙에서 지우려면 :
public static SharedPreferences.Editor getEditor(Context context) {
return getPreferences(context).edit();
}
그런 다음 모든 클래스에서 : 커밋은 기본 설정이 지워 졌는지 여부를 확인할 수있는 부울을 반환합니다.
Navigation.getEditor(this).clear().commit();
또는 apply를 사용할 수 있습니다. 그것은 void를 반환
Navigation.getEditor(this).clear().apply();
많은 공유 환경 설정 키가 있기 때문에 답이 없습니다.
단위 테스트 대신 Android 테스트를 실행한다고 가정 해 봅시다.
모든 shared_prefs 파일 을 반복하고 삭제하기 위해 노력하고 있습니다.
@BeforeClass는 모든 테스트 및 ActivityTestRule 전에 실행됩니다.
@BeforeClass
public static void setUp() {
Context context = InstrumentationRegistry.getTargetContext();
File root = context.getFilesDir().getParentFile();
String[] sharedPreferencesFileNames = new File(root, "shared_prefs").list();
for (String fileName : sharedPreferencesFileNames) {
context.getSharedPreferences(fileName.replace(".xml", ""), Context.MODE_PRIVATE).edit().clear().commit();
}
}
오늘 아침에 그냥 했어. 명령 프롬프트에서 :
adb shell
cd /data/data/YOUR_PACKAGE_NAME/shared_prefs
rm * // to remove all shared preference files
rm YOUR_PREFS_NAME.xml // to remove a specific shared preference file
참고 : 기본 Android 가상 기기, Genymotion 기기 또는 실제 루팅 된 핸드셋 / 태블릿 등 루팅 된 기기가 필요합니다.
/data/data
. 직접 액세스하려면 루팅 된 전화가 필요합니다 !
su
후에 실행해야합니다 adb shell
.