对于应用程序的第一次运行,我使用SharedPreference进行保存,该应用程序已经进行了第一次运行。但它需要第二次运行才能正确保存值(其他值也需要第二次运行)。第二次运行后,应用程序正常工作。代码片段位于活动的onCreate中(应用或提交没有区别)
mPrefs = getApplicationContext().getSharedPreferences(getPackageName(), MODE_PRIVATE);
Log.d("onCreate", "KEY_FIRSTRUN 1 " + Boolean.toString(mPrefs.getBoolean(KEY_FIRSTRUN, true)));
// First start
if (mPrefs.getBoolean(KEY_FIRSTRUN, true))
{
mPrefs.edit().putBoolean(KEY_FIRSTRUN, false).apply();
Log.d("onCreate", "KEY_FIRSTRUN 2 " + Boolean.toString(mPrefs.getBoolean(KEY_FIRSTRUN, true)));
// ... Initializing DB
}else{
// ...
}
int runCounter = mPrefs.getInt(KEY_COUNTER_RUN, 0) + 1;
mPrefs.edit().putInt(KEY_COUNTER_RUN, runCounter).apply();
Log.d("onCreate", "runCounter " + Integer.toString(mPrefs.getInt(KEY_COUNTER_RUN, 0)));
Log.d输出为:
onCreate:KEY_FIRSTRUN 1 true
onCreate:KEY_FIRSTRUN 2 false
onCreate:runCounter 1
onCreate:KEY_FIRSTRUN 1 true
onCreate:KEY_FIRSTRUN 2 false
onCreate:runCounter 1
onCreate:KEY_FIRSTRUN 1 false
onCreate:runCounter 2
onCreate:KEY_FIRSTRUN 1 false
onCreate:runCounter 3
PS:它对这些代码扩展也没有用,例如:
SharedPreferences.Editor prefsEditor = mPrefs.edit();
prefsEditor.clear();...
彼得
答案 0 :(得分:0)
我发现了我的错误:另一个KEY字符串的值与KEY_FIRSTRUN相同,因此第一个键被覆盖。