3

我的应用程序崩溃了,并且所有数据都在共享首选项被清除。 我正在保存一些标志并保持共享首选项中的用户会话。 其中一个标志是IsFirstLaunch,它告诉我应用程序是否第一次启动,如果返回true,那么我从服务器下载一些数据并存储在SQLite数据库共享首选项重置应用程序崩溃时的数据。请指导

请指导,在此先感谢。

+0

请出示您的代码,其中的应用程序崩溃和错误日志了。 – DkThakur

+0

http://stackoverflow.com/questions/15353900/shared-preferences-reset-data-when-app-is-force-closed-or-device-is-restarted –

+0

可能重复共享日志猫的信息或代码来查找坠机原因。 –

回答

0

所以在崩溃之后,当它加载首选项时,在首选项xml文件中有一个空白,导致首选项重置。

为避免这种情况,您可以将所有首选项修改置于同步块中,或者甚至对所有首选项写入使用同步静态方法

我想 - 你需要一个更好的方式来管理和存储你正在保存的数据。

但是,下次访问共享首选项时,xml文件被清除并重新启动。

例如:

private static final class SharedPreferencesImpl implements SharedPreferences { 
... 
    public String getString(String key, String defValue) { 
     synchronized (this) { 
      String v = (String)mMap.get(key); 
      return v != null ? v : defValue; 
     } 
    } 
... 
    public final class EditorImpl implements Editor { 
     public Editor putString(String key, String value) { 
      synchronized (this) { 
       mModified.put(key, value); 
       return this; 
      } 
     } 
    ... 
    } 
} 
+0

谢谢...你能给我一些相同的代码吗? – SaurabhG

+0

请检查更新回答@ SaurabhG –

+0

您的问题解决了吗? @SaurabhG –