내 응용 프로그램에서는 SharedPreferences의 제품 카탈로그를 TXT 형식으로 저장합니다. 이 txt 파일은 각각 4MB 이상입니다. 그러나이상한 OutOfMemory on SharedPreferences 충돌
나는 사용자가 이미 카탈로그 (된 SharedPreferences에서 디렉토리를 확인) 응용 프로그램 충돌을 다운로드 한 경우에는 확인하려고
로그 :
02-05 15:29:34.631: E/AndroidRuntime(32620): FATAL EXCEPTION: SharedPreferencesImpl-load
02-05 15:29:34.631: E/AndroidRuntime(32620): Process: br.com.asiatex, PID: 32620
02-05 15:29:34.631: E/AndroidRuntime(32620): java.lang.OutOfMemoryError
02-05 15:29:34.631: E/AndroidRuntime(32620): at java.lang.AbstractStringBuilder.enlargeBuffer(AbstractStringBuilder.java:94)
02-05 15:29:34.631: E/AndroidRuntime(32620): at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:124)
02-05 15:29:34.631: E/AndroidRuntime(32620): at java.lang.StringBuilder.append(StringBuilder.java:271)
02-05 15:29:34.631: E/AndroidRuntime(32620): at org.kxml2.io.KXmlParser.readValue(KXmlParser.java:1345)
02-05 15:29:34.631: E/AndroidRuntime(32620): at org.kxml2.io.KXmlParser.next(KXmlParser.java:390)
02-05 15:29:34.631: E/AndroidRuntime(32620): at org.kxml2.io.KXmlParser.next(KXmlParser.java:310)
02-05 15:29:34.631: E/AndroidRuntime(32620): at com.android.internal.util.XmlUtils.readThisValueXml(XmlUtils.java:781)
02-05 15:29:34.631: E/AndroidRuntime(32620): at com.android.internal.util.XmlUtils.readThisMapXml(XmlUtils.java:559)
02-05 15:29:34.631: E/AndroidRuntime(32620): at com.android.internal.util.XmlUtils.readThisValueXml(XmlUtils.java:809)
02-05 15:29:34.631: E/AndroidRuntime(32620): at com.android.internal.util.XmlUtils.readValueXml(XmlUtils.java:751)
02-05 15:29:34.631: E/AndroidRuntime(32620): at com.android.internal.util.XmlUtils.readMapXml(XmlUtils.java:490)
02-05 15:29:34.631: E/AndroidRuntime(32620): at android.app.SharedPreferencesImpl.loadFromDiskLocked(SharedPreferencesImpl.java:120)
02-05 15:29:34.631: E/AndroidRuntime(32620): at android.app.SharedPreferencesImpl.access$000(SharedPreferencesImpl.java:52)
02-05 15:29:34.631: E/AndroidRuntime(32620): at android.app.SharedPreferencesImpl$1.run(SharedPreferencesImpl.java:91)
것은 내 문자열을 저장하고있어 어떻게
private void storeJson(){
String mPref;
String mPrefString;
if (flag == DOWNLOAD_CURTAINS){
mPref = "mPrefCurtains";
mPrefString = "jsonCurtains";
} else if (flag == DOWNLOAD_CARPETS) {
mPref = "mPrefCarpets";
mPrefString = "jsonCarpets";
} else {
mPref = "mPrefQuits";
mPrefString = "jsonQuits";
}
SharedPreferences settings = context.getSharedPreferences(mPref, Context.MODE_PRIVATE);
SharedPreferences.Editor prefEditor = settings.edit();
prefEditor.putString(mPrefString, result).commit();
}
나는 확인하고있어 방법 :
public void checkCurtains() {
Boolean check = false;
mPrefs = this.getSharedPreferences("mPrefCurtains", MODE_WORLD_READABLE);
check = mPrefs.contains("jsonCurtains"); //crashing here on debbug
if (check) {
setUpCurtains(true);
} else {
setUpCurtains(false);
}
}
도와주세요!
감사합니다.
그냥 멋지다 :'if (check) {setUpCurtains (true); } else {setUpCurtains (false); }'->'setUpCurtains (check); ' –
@Mr_and_Mrs_D 아, 내 잘못이야. 감사합니다 – rsicarelli
환영 - 기쁜 당신이 그것을 해결 - 코드를 게시 할 때 가로 스크롤바를 피하십시오 - 외모와 읽고 더 :) :) - "포장 줄"서식을 활성화하십시오 - logcats 훨씬 더 좋게 만들 수 없습니다 - 시간 스탬프를 제거하는 데 도움이됩니다. –