Android SharedPreferences重置为默认值。重新启动应用程序后

时间:2013-08-19 15:02:05

标签: java android push-notification sharedpreferences default

有时在重新启动应用后,会重置API级别>设备上的共享偏好设置。 13。 共享偏好设置在应用程序的开头(应用程序的第一个活动)。

代码:

Public void saveCountry(Context context, String countryCode) {

   SharedPreferences settingsActivity  = context.getSharedPreferences("preferences", Context.MODE_PRIVATE);
   SharedPreferences.Editor editor = settingsActivity.edit();
   editor.putString("key_country", countryCode);
   editor.commit();

   setDefaultChannels(context);
}

public String getCountry(Context mContext) {

   SharedPreferences settingsActivity  = mContext.getSharedPreferences("preferences", Context.MODE_PRIVATE);

   String country = settingsActivity.getString("key_country", null);
   return country;
}

我不知道我做错了什么以及为什么会这样。在收到详细说明的推送通知后,我特别注意到了这一点。

1 个答案:

答案 0 :(得分:1)

你是否在这样的应用程序开头调用了保存方法?

    public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main); 

    saveCountry(); 

因为如果你是,你每次在启动时都在调用它,所以该国家将被覆盖在启动时的任何数据countryCode等于什么。所以也许你应该有一些代码只能在第一次运行时调用它。

以下是我在应用中实现它的方法。

    boolean firstRun;
    final SharedPreferences firstRunPref = getSharedPreferences(PREFS_NAME, 0);
    firstRun = firstRunPref.getBoolean("firstRun", true);

    if(firstRun==true){

    saveCountry();

    SharedPreferences.Editor editor3 = firstRunPref.edit();
        editor3.putBoolean("firstRun", false);
        editor3.commit(); 
    }