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

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

请展示您的代码,其中应用程序崩溃并显示错误日志。 - DkThakur
可能是 https://dev59.com/S2Up5IYBdhLWcg3wVWYG 的重复问题。 - Mustansir
分享日志信息或代码以查找崩溃原因。 - Natarajan Raman
@DkThakur :可悲的是我没有能够再次重现相同的情况,我尝试了很多次,所以没有错误日志。 - SaurabhG
那么我们如何确定您在哪里做错了或问题出在哪里呢? - DkThakur
1个回答

2

当崩溃后,加载偏好设置时,首选项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;
            }
        }
    ...
    }
}

谢谢...你能给我一些相关代码吗? - SaurabhG
非常感谢您。 - SaurabhG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接