在我的应用程序中,我将产品的目录以TXT的形式保存在SharedPreferences中。这些txt文件每个都有或多或少的4mb。SharedPreferences上的奇怪OutOfMemory崩溃
然而,当我尝试检查,如果用户已经下载目录(检查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
欢迎 - 很高兴你解决了它 - 尝试在发布代码时避免水平滚动条 - 外观和读取更好:) - 在eclipse中激活“包装线”格式化 - logcats不会变得更好 - 删除时间戳帮助尽管 –