【问题标题】:Android SharedPreferences is reset to default values. After restarting appAndroid SharedPreferences 被重置为默认值。重启应用后
【发布时间】:2013-08-19 15:02:04
【问题描述】:

有时在重新启动应用程序后会重置 API 级别 > 13 的设备上的共享首选项。 sharedpreferences 在应用开始时设置(应用的第一个活动)。

代码:

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;
}

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

【问题讨论】:

    标签: java android push-notification sharedpreferences default


    【解决方案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(); 
        } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-25
      • 1970-01-01
      • 1970-01-01
      • 2016-04-18
      • 1970-01-01
      • 2011-08-12
      • 2015-09-09
      相关资源
      最近更新 更多