除非我在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();”线。
有什么建议吗?
答案 0 :(得分:0)
我在代码中没有看到您定义编辑器的位置?包含编辑器的第一行代码是
editor = settings.edit();
但你永远不会定义'编辑'是什么
答案 1 :(得分:0)
我明白了。发生的事情是我把自己置于无尽的循环中。我必须:
settings.unregisterOnSharedPreferenceChangeListener(prefsListener);
进行我的更改,然后
settings.registerOnSharedPreferenceChangeListener(prefsListener);
不确定为什么只在Froyo中创建了一个问题。谷歌必须在操作系统上做出改变,以防止在未来版本中出现这种情况。