0
환경 설정이 어디에도 저장되어 있지 않다는 것을 안전하게 주장하는 방법을 찾으려고 노력했습니다. 그것은 아직 캐싱 메커니즘을 이해하지 못한 것 같아요 문서는 그것을 명확하게하지 않습니다. 이것은 내가 무슨 짓을 :공유 환경 설정이 없음을 안전하게 선언하는 방법
File prefsFile = new File("/data/data/"+context.getPackageName() + "/shared_prefs/"
+ context.getPackageName() + "_preferences.xml");
prefsFile.delete();
assertFalse(prefsFile.exists()); // success
// This assertion could fail - why?
assertEquals(0, context.getSharedPreferences(context.getPackageName()+"_preferences",
MODE_PRIVATE).getAll().size());
나는의 환경 설정 파일을 삭제하지만,이 getAll().size()
0이 아닌 값을 반환하는 것이 여전히 가능하다.
누군가 설명 할 수 있습니까?
게시물 주셔서 감사합니다! 따라서 SharedPreferences 인스턴스는 실제로 지속 된 prefs를 복사/캐시하고 단순히 java.io.File 객체와 같은 참조를 제공하지 않습니다. 첫 번째 점 : delete()는 파일에 ' 왜 그런가? 그래서 여러분은 prefs의 in-process 복사본에 대해서만 테스트 할 것입니다. – cody
"SharedPreferences 인스턴스는 실제로 지속 된 환경 설정을 복사/캐시합니다"- 예. 사실, 뒤에서 파일을 엉망으로 만들면 좋아하지 않습니다. "delete()는 파일이 존재하지 않는다면 false를 리턴합니다. 그래서 왜 체크합니까?" - 당신은'delete()'의 반환 값을 검사하지 않기 때문에. "그래서 당신은 prefs의 in-process 복사본에 대해서만 테스트 할 것입니다." - 실제 API를 사용합니다. 환경 설정을 지우고 변경 사항을 커밋하면 파일의 내용이 지워집니다. – CommonsWare
글쎄, 나는 파일이 삭제되기 전에 존재했는지, 아니면 지워졌는지 확인하고 싶지 않았다. 단지 그것이 존재하지 않는다는 것을 확인하고 싶었다. 한 가지 질문 : 시스템에서 제공 한 초기 값의 어떤 종류가 파일에 기록 될 수 있었습니까? – cody