這段代碼似乎對所有事情都很好,除了我在Froyo上模擬它時。我沒有運行Froyo的實際設備,所以我無法在實際的設備上測試它,但是它在達到提交時的FC狀態。我甚至在try塊中有代碼,所以我會認爲它應該捕獲異常而不是強制關閉。Android SharedPreferences在Froyo上強制關閉提交
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();」線。
有什麼建議嗎?
你能發佈你的stacktrace嗎? – Shaun
使用editor.apply()代替editor.commit(); –
@SunnyKumarAditya editor.apply()似乎不存在。 – Randy