简体   繁体   English

如果从最近的活动android中删除应用程序,则SharedPreferences被清除

[英]SharedPreferences cleared if remove the app from recent activity android

I'm using SharedPreferences in my project with MODE_PRIVATE, when i cleared the app from recent activity list, and opens the app again, all my preference data is cleared. 我在MODE_PRIVATE中的项目中使用了SharedPreferences,当我从最近的活动列表中清除了该应用程序,然后再次打开该应用程序时,所有的首选项数据都被清除了。

I'm using this class fro setting and getting preference. 我正在使用此类来回设置并获得偏好。

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

}

can any one help me ...?? 谁能帮我 ...??

change your set method like this 像这样更改您的设置方法

public Preferences set(String key, int value){

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

you don't need separate commit() into independent method. 您不需要将单独的commit()放入独立的方法中。

good luck 祝好运

this is another example, in this example i create a value that save my city name and when my app lunched i check for existing , if exist the value of that key returned to me. 这是另一个示例,在此示例中,我创建一个保存我的城市名称的值,当我的应用午餐时,我检查是否存在(如果存在)该键的值返回给我。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM