当应用程序崩溃时,共享首选项会重置数据。请指导
Shared Preferences reset data when app crashed. Please guide
我的应用程序崩溃了,共享首选项 中的所有数据都被清除了。
我正在保存一些标志并在共享首选项中维护用户会话。
其中一个标志是 IsFirstLaunch,它告诉我应用程序是否是第一次启动,如果 returns true 那么我正在从服务器下载一些数据并存储在 SQLite 数据库.
请指点,谢谢
因此,在加载首选项时发生崩溃后,首选项 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;
}
}
...
}
}
我的应用程序崩溃了,共享首选项 中的所有数据都被清除了。 我正在保存一些标志并在共享首选项中维护用户会话。 其中一个标志是 IsFirstLaunch,它告诉我应用程序是否是第一次启动,如果 returns true 那么我正在从服务器下载一些数据并存储在 SQLite 数据库.
请指点,谢谢
因此,在加载首选项时发生崩溃后,首选项 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;
}
}
...
}
}