共享的偏好设置崩溃的应用程序

时间:2018-09-05 10:45:10

标签: android sharedpreferences

今天,我已经以某种方式破坏了我的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)

1 个答案:

答案 0 :(得分:0)

  

以前有人遇到过这个问题吗?

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

  

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

您在注释中提到您没有为SharedPreferences写很多值。我认为问题的根源是您的应用程序可能正在忙于写入SharedPreferences时被IDE重新启动。

  

因为我不知道它是否可能在生产环境中发生或   仅仅是调试问题

根据我的经验,在开发应用程序时,热重装总是很麻烦,而且我认为您很不幸,因此首选项文件已损坏。

我建议您稍微试用一下您的应用的发行版。如果问题仍然存在(这不太可能发生),我将调查您的写入您的SharedPreferences的代码。在这种情况下,如果可能的话,还要添加一个Exception的支票。

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