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

时间:2017-04-17 05:37:02

标签: android database sqlite android-studio android-sharedpreferences

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

请提前指导,谢谢。

1 个答案:

答案 0 :(得分:1)

因此在崩溃后加载首选项时,首选项xml 文件中有一个空白,导致首选项重置。

为避免这种情况,您可以将所有首选项修改放在 synchronized块中,甚至可以使用一个同步静态方法进行所有首选项编写

我认为 - 您需要一种更好的方法来管理和存储您正在保存的数据。

下次访问共享首选项时,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;
            }
        }
    ...
    }
}