应用退出后,共享偏好中的数据丢失

时间:2016-04-16 10:19:43

标签: android sharedpreferences

我是android新手。我试图在从服务器获取的共享首选项中保存一些信息。但是当我退出应用程序时,优先保存值,设置为0.我希望我保存的优先值保持不变,直到我手动清除它。

这是我的代码

public class SharedPreference {


        private SharedPreferences sharedPreferences;
        private SharedPreferences.Editor editor;

        static final String NAME = "RealTimeLocationTrackerUserId";
        static final String NAME_KEY = "name";
        static final String LOGIN_KEY = "login";


        public SharedPreference(Context context) {

            this.sharedPreferences = context.getSharedPreferences(NAME, Context.MODE_PRIVATE);
            this.editor = sharedPreferences.edit();
        }

        public void save(String name) {

            editor.clear();

            editor.putBoolean(LOGIN_KEY, true);

            editor.putString(NAME_KEY, name);

            editor.commit();

        }

    public void remove() {

        editor.putBoolean(LOGIN_KEY, true);

        editor.clear();

        editor.commit();

    }

        public HashMap<String, String> retrieveData() {

            String name = sharedPreferences.getString(NAME_KEY, null);


            HashMap<String, String> map = new HashMap<>();
            map.put(NAME_KEY, name);


            return map;
        }


    }

我通过调用

来保存活动中的数据
sharedPreference.save(tmpOb.getString("user_id"));

并通过以下方式检索:

HashMap<String, String> map = sharedPreference.retrieveData();
String loginName = map.get(SharedPreference.NAME_KEY);//testing

2 个答案:

答案 0 :(得分:0)

这是使用共享偏好的最佳方式,只需调用此方法

即可

使用此类进行存储并检索项目中的Sharepreference,只需复制此类的有害生物

<强> SharedPreferenceManager.java

import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;

public class SharedPreferenceManager  {

    public static void setDefaults(String key, String value, Context context) {
        SharedPreferences prefs =
                PreferenceManager.getDefaultSharedPreferences(context);

        SharedPreferences.Editor editor = prefs.edit();

        editor.putString(key, value);

        editor.commit();
    }

    public static String getDefaults(String key, Context context) {
        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
        return preferences.getString(key, null);
    }


    public static void setDefaults_boolean(String key, boolean value, Context context) {
        SharedPreferences prefs =
                PreferenceManager.getDefaultSharedPreferences(context);
        SharedPreferences.Editor editor = prefs.edit();
        editor.putBoolean(key, value);
        editor.commit();
    }

    public static Boolean getDefaults_boolean(String key, Context context) {
        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
        return preferences.getBoolean(key, Boolean.parseBoolean(null));
    }

    public static void ClearAllPreferences(Context context){

        //remove all your prefs
        context.getSharedPreferences("prefs", 0).edit().clear().commit();
    }
}

对于商店价值

SharedPreferenceManager.setsetDefaults("key","Value",context);

用于检索值

SharedPreferenceManager.getDefaults("Key",Context);

答案 1 :(得分:0)

使用this library,简化了SharedPreferences的使用,让您的生活更加轻松。

  

Android-SharedPreferences-Helper 简化了默认Android SharedPreferences类的使用。开发人员可以做几行   代码本来需要几个。很简单   理解与默认类相比并且易于使用。

     
      
  • 一行初始化和设置
  •   
  • 轻松选择是使用默认首选项还是自定义首选项文件
  •   
  • 预定义(数据类型默认值)和可自定义(您可以选择的)每种数据类型的默认值
  •   
  • 只需使用额外的参数
  • 即可为单次使用设置不同的默认值   
  • 您可以像默认类一样注册和取消注册OnSharedPreferenceChangeListener
  •