SharedPreference:第一次保存

时间:2016-02-07 12:48:27

标签: sharedpreferences


对于应用程序的第一次运行,我使用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();...

彼得

1 个答案:

答案 0 :(得分:0)

我发现了我的错误:另一个KEY字符串的值与KEY_FIRSTRUN相同,因此第一个键被覆盖。