SharedPreferences.Editor.apply力关闭
问题描述:
我使用下面的代码:SharedPreferences.Editor.apply力关闭
SharedPreferences.Editor edit = mPrefs.edit();
edit.putString("UUID", UUID.randomUUID().toString());
edit.commit();
//edit.apply();
这工作得很好,但如果我注释掉的承诺,并取消对应用,应用力我的设备上关闭,并没有错误消息或抛出的异常。奇怪的是,这在2.2和2.3.3的模拟器中运行良好。它只在我运行的Nexus one上关闭2.2.1
我有上面的解决方法,但对结束的原因感兴趣。
任何人都可以帮忙吗?
干杯,Venatu
答
很简单我用科德这样的:
if (respondsTo(editor, "apply")) invoke(editor, "apply”);
else editor.commit();
,然后我有这两个神奇的方法为静态导入..
public static boolean respondsTo(Object object, String methodName) {
try {
object.getClass().getMethod(methodName, (Class<?>[]) null);
return Yes;
} catch (NoSuchMethodException e) {
return No;
}
}
public static Object invoke(Object object, String methodName) {
try {
return object.getClass().getMethod(methodName, (Class<?>[]) null).invoke(object);
} catch (Exception e) {
return INVOKE_FAILED;
}
}
提交运行,同时阻挡界面,因此可以问题,如果节省大量数据。我使用后台线程提交(这是有问题的...),但现在很多用户有2.3,所以我认为老年人应该切换...
任何强制关闭意味着你有你的日志中详细的堆栈跟踪。请张贴。 – EboMike