应用程序崩溃时,共享首选项会重置数据。请指导

Posted

技术标签:

【中文标题】应用程序崩溃时,共享首选项会重置数据。请指导【英文标题】:Shared Preferences reset data when app crashed. Please guide 【发布时间】:2017-09-12 17:34:57 【问题描述】:

我的应用崩溃了,共享偏好中的所有数据都被清除了。 我正在保存一些标志并以共享偏好维护用户会话。 其中一个标志是 IsFirstLaunch,它告诉我应用程序是否是第一次启动,如果返回 true,那么我正在从服务器下载一些数据并存储在 SQLite 数据库 .

请指导,提前谢谢。

【问题讨论】:

请在应用程序崩溃的地方以及错误日志中显示您的代码。 ***.com/questions/15353900/…的可能重复 分享日志猫信息或代码以查找崩溃原因。 @DkThakur :可悲的是我无法再次重新生成相同的场景,我尝试了很多,所以没有错误日志。 那么我们如何确定您做错了什么或问题出在哪里。 【参考方案1】:

因此,在加载首选项时发生崩溃后,首选项 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;
            
        
    ...
    

【讨论】:

谢谢...你能给我一些相同的代码吗? 是的.. 非常感谢

以上是关于应用程序崩溃时,共享首选项会重置数据。请指导的主要内容,如果未能解决你的问题,请参考以下文章

当我更改视图时,为啥我的按钮首选项/参数会重置?

在使用 TimePicker 或 NumberPicker 查看对话框首选项时旋转 Android 设备会导致应用程序崩溃

即使在应用关闭时,共享首选项也会永久传递给另一个活动

Android:从设置外部更改相机权限会导致应用程序共享首选项清除

将 Web 服务数据存储到共享首选项

使用共享首选项保存和重新加载 ListView [保存 onDestroy()]