0

除了我在 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();”上 线。

有什么建议么?

4

2 回答 2

0

我在您的代码中没有看到您定义编辑器的任何地方?包含编辑器的第一行代码是

editor = settings.edit(); 

但你永远不会定义“编辑器”是什么

于 2012-08-23T18:19:34.747 回答
0

我想到了。正在发生的事情是,我让自己陷入了一个无休止的循环。我不得不:

settings.unregisterOnSharedPreferenceChangeListener(prefsListener);

做我的改变,然后

settings.registerOnSharedPreferenceChangeListener(prefsListener);

不知道为什么这只会在 Froyo 中造成问题。谷歌必须对操作系统进行更改以防止在未来版本中出现这种情况。

于 2012-09-04T20:42:07.110 回答