可以不保存SharedPreferences吗?

时间:2019-02-26 12:47:40

标签: android sharedpreferences

我有一个使用SharedPreferences记录用户签入或签出状态的应用程序。 如果按下签入按钮,则其按钮显示为灰色,则签出按钮可用,相反的操作也是如此。

但是,有些用户告诉我,“有时”他们将在第二天再次签入,并且结帐仍然可用。

我想他们正在忘记轻按它,但是我想知道是否有机会自行清除此SharedPreferencces?

这是我保存签入状态的代码的一部分:

SharedPreferences preferences = getSharedPreferences("MyPreferences", Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = preferences.edit();
            editor.putInt("statuscheckin", 1);    //1 for checkin, 0 for checkout            
            editor.commit();

这是我检查的部分

if (getSharedPreferences("MyPreferences", Context.MODE_PRIVATE).getInt("statuscheckin", 0) == 1) {...}

2 个答案:

答案 0 :(得分:0)

尝试此代码,

会话管理器代码:

SharedPreferences sharedPreferences;
SharedPreferences.Editor editor;
Context context;

public static final String KEY_CHECKIN= "checkin";

public void setCheckin(boolean login){
    editor = sharedPreferences.edit();
    editor.putBoolean(KEY_CHECKIN,checkin);
    editor.apply();
}

public boolean getCheckin(){
    return sharedPreferences.getBoolean(KEY_CHECKIN,false);
}

在您的Java代码中:

SessionManager sessionmanager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
sessionmanager = new SessionManager(this);

//签到条件

if(user checkedIn){
sessionmanager.setCheckin(true);}

///当用户再次打开应用程序时获取值:

if(sessionmanager.getCheckin()){}////proceed with your logic.

答案 1 :(得分:0)

除非您清除存储/缓存,否则SharedPreferences不会自行清除。

  • 请确保您没有自行清除任何情况。
  • 如果仅获取默认值,则有可能在提交值之前使用它。