1

我正在使用以下代码:

SharedPreferences.Editor edit = mPrefs.edit();
edit.putString("UUID", UUID.randomUUID().toString());
edit.commit();
//edit.apply();

这工作正常,但如果我注释掉提交并取消注释应用,应用程序强制在我的设备上关闭,没有错误消息或抛出异常。奇怪的是,这在 2.2 和 2.3.3 下的模拟器中运行良好。它只在我运行 2.2.1 的 Nexus 上关闭

我有上面的解决方法,但对关闭的原因很感兴趣。

任何人都可以帮忙吗?

干杯,维纳图

4

2 回答 2

4

apply()在 API 级别 9(又名 Android 2.3)中添加。不要尝试在 Android 2.2 上使用它。

于 2011-02-16T00:03:39.007 回答
0

这很简单,我像这样使用kode:

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;
    }
}

提交在阻塞 UI 时运行,因此如果保存大数据可能会出现问题。我使用后台线程进行提交(这是有问题的......)但现在很多用户都有 2.3 所以我认为老年人应该切换......

于 2013-06-25T12:02:13.130 回答