【问题标题】:SharedPreferences cleared if remove the app from recent activity android如果从最近的活动 android 中删除应用程序,SharedPreferences 将被清除
【发布时间】:2014-10-11 16:47:12
【问题描述】:

我在我的项目中使用 MODE_PRIVATE 使用 SharedPreferences,当我从最近的活动列表中清除应用程序并再次打开应用程序时,我的所有偏好数据都被清除。

我正在使用这个类来设置和获取偏好。

public class Preferences {

private Context _context;
private SharedPreferences _preferences;
private Editor _editor; 
private String prefName =   "pref";

//=====
public Preferences(Context context){

    _context = context;
    _preferences = this._context.getSharedPreferences(prefName, Context.MODE_PRIVATE);
    _editor = this._preferences.edit();
}

//=====
public Preferences commit(){
    _editor.commit();
    return this;
}

//===== 
public Preferences set(String key, String value){

    _editor.putString(key, value);
    return this;
}

//=====
public String get(String key){      
    return _preferences.getString(key, "");
}

//===== 
public Preferences set(String key, int value){

    _editor.putInt(key, value);
    return this;
}

//=====
public int getInt(String key){      
    return _preferences.getInt(key, 0);
}

//===== 
public Preferences setBoolean(String key, boolean value){

    _editor.putBoolean(key, value);
    return this;
}

//=====
public void removeKey(String key){
    _editor.remove(key);
}

//=====
public boolean getBoolean(String key){      
    return _preferences.getBoolean(key, false);
}

}

谁能帮帮我...??

【问题讨论】:

  • 如何“从最近的活动列表中清除应用程序”?
  • 按住home键会显示最近的应用列表,可以从那里清除..
  • 如果你只是用返回按钮完成你的应用程序?
  • @greenapps 我犯了一个非常愚蠢的错误,我使用一个常量类来声明键,我把这些键留空了。感谢您的宝贵时间。

标签: android sharedpreferences


【解决方案1】:

像这样改变你的设置方法

public Preferences set(String key, int value){

    _editor.putInt(key, value);
    _editor.commit();
    return this;
}

你不需要单独的 commit() 进入独立的方法。

祝你好运

【讨论】:

  • 我试过你的概念,但没有任何区别。
  • 为sharepreferences创建类不是一个好主意,你可以很容易地将它用作公共文件,我会为你发布示例
【解决方案2】:

这是另一个例子,在这个例子中,我创建了一个值来保存我的城市名称,当我的应用程序启动时,我检查现有的,如果存在,则返回给我的那个键的值。

SharedPreferences sp;

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

        // define sp
        sp=getSharedPreferences("test", Context.MODE_PRIVATE);


        // get sp value if exist
        if(sp.contains("EkbatanApp")){
            String spResult=sp.getString("EkbatanApp", "");

        }

    }

    //save key 
    public void SaveSettingOnClick(View v){
        Editor editor=sp.edit();
        editor.putString("EkbatanApp", "Borujerd");
        editor.commit();
    }

【讨论】:

  • 我犯了一个非常愚蠢的错误,我使用一个常量类来声明键,我把这些键留空了。感谢您的宝贵时间,现在我的代码运行良好。
猜你喜欢
  • 2020-11-04
  • 1970-01-01
  • 2014-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多