Android SharedPreferences强制关闭Froyo中的提交

时间:2012-08-23 18:16:38

标签: android sharedpreferences android-2.2-froyo

除非我在Froyo上模拟它,否则此代码似乎可以正常工作。我没有运行Froyo的实际设备,因此我无法在实际设备上测试它,但是当它进入提交时它就是FC。我甚至在try块中有代码,所以我认为它应该捕获异常而不是强制关闭。

private void getPrefs() {

    boolean dockRespond;
    boolean carDockRespond;
    boolean silenceRinger;

    settings = getSharedPreferences(PREFS_NAME, 0);
    editor = settings.edit();

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());

    dockRespond = prefs.getBoolean("dockRespond", true);
    carDockRespond = prefs.getBoolean("carDockRespond", true);
    silenceRinger = prefs.getBoolean("silenceRinger", false);

    Intent startDock = new Intent(this, DockService.class);

    if(dockRespond)
    {
        //start dock listener service
        startService(startDock);
    }
    else
    {
        //stop dock listener service
        stopService(startDock);
    }

    try
    {
        editor.putBoolean(DOCKRESPONSEGLOBAL, dockRespond);
        editor.putBoolean(CARDOCKRESPONSEGLOBAL, carDockRespond);
        editor.putBoolean(SILENCERINGER, silenceRinger);
        editor.commit();
    }
    catch (Exception e)
    {
        Log.d("Exception caught: ", e.getMessage());
    }
}

所有常量(全部大写)都在常量区域中定义,正如我之前所说,代码似乎适用于除Froyo之外的任何操作系统版本。在froyo中,FC是在“editor.commit();”线。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

我在代码中没有看到您定义编辑器的位置?包含编辑器的第一行代码是

editor = settings.edit(); 

但你永远不会定义'编辑'是什么

答案 1 :(得分:0)

我明白了。发生的事情是我把自己置于无尽的循环中。我必须:

settings.unregisterOnSharedPreferenceChangeListener(prefsListener);

进行我的更改,然后

settings.registerOnSharedPreferenceChangeListener(prefsListener);

不确定为什么只在Froyo中创建了一个问题。谷歌必须在操作系统上做出改变,以防止在未来版本中出现这种情况。