共享首选项崩溃应用程序

问题描述 投票:0回答:1

今天我以某种方式打破了我的Android应用程序。多次重新启动后,共享首选项文件已损坏,我无法在没有崩溃的情况下启动应用程序。它只在重新安装后得到修复。

以前有人有这个问题吗?

 SharedPreferencesImpl: Cannot read
 /data/user/0/fi.millisecond.canvas.flow/shared_prefs/fi.millisecond.canvas.flow.xml
     org.xmlpull.v1.XmlPullParserException: Unexpected token (position:unknown @1:9 in java.io.InputStreamReader@b2a3b47) 
         at org.kxml2.io.KXmlParser.next(KXmlParser.java:436)
         at org.kxml2.io.KXmlParser.next(KXmlParser.java:321)
         at com.android.internal.util.XmlUtils.readValueXml(XmlUtils.java:1405)
         at com.android.internal.util.XmlUtils.readMapXml(XmlUtils.java:740)
         at android.app.SharedPreferencesImpl.loadFromDisk(SharedPreferencesImpl.java:150)
         at android.app.SharedPreferencesImpl.-wrap1(Unknown Source:0)
         at android.app.SharedPreferencesImpl$1.run(SharedPreferencesImpl.java:120)
android sharedpreferences
1个回答
0
投票

以前有人有这个问题吗?

好吧,我从来没有遇到过这个问题。

首先,我想找到问题的根本原因

你在评论中提到你没有给SharedPreferences写很多值。我假设问题的根源是您的应用程序由IDE重新启动,而它可能正在忙着写入您的SharedPreferences

因为我不知道它是否会在生产环境中发生,或者它只是一个调试问题

根据我的经验,热重新加载在开发应用程序时总是非常错误,我认为你不幸,因此首选项文件已损坏。

我建议你玩你的应用程序的发布版本。如果问题仍然存在,这是不可能的,我会调查你的代码写到你的SharedPreferences。如果可能的话,在这种情况下也要加上Exception的支票。

保存时,您还可以获取操作的返回值。看看:http://developer.android.com/reference/android/content/SharedPreferences.Editor.html#commit()。我知道Android Studio可能会抱怨使用commit()。但是,这是了解编写首选项是否成功的唯一方法。

© www.soinside.com 2019 - 2024. All rights reserved.