如何在注销期间清除SharedPreferences?

时间:2018-04-12 08:37:43

标签: java android sharedpreferences logout android-sharedpreferences

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(Login.this);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("UID", jobj1.getString("admin_id").toString());
editor.apply();

Toast toast = Toast.makeText(Login.this, "Login Successfully", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER | Gravity.CENTER_HORIZONTAL, 0, 0);
toast.show();
Intent i1=new Intent(Login.this,DashBoard.class);
startActivity(i1);
finish();

这是我使用Intent的注销代码,我想在点击注销按钮时清除SharedPreference

case "Logout":
              Intent i5=new Intent(context1, Login.class);
              i5.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
              context1.startActivity(i5);
              ((DashBoard)context1).finish();
              Toast.makeText(context1,"Logout",Toast.LENGTH_LONG).show();

4 个答案:

答案 0 :(得分:3)

使用clear()方法:

SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(this).edit();
editor.clear()
editor.apply()

答案 1 :(得分:0)

SharedPreferences preferences = context.getSharedPreferences("pref_name, Context.MODE_PRIVATE);
preferences.edit().clear().commit();

答案 2 :(得分:0)

对于API 24(牛轧糖)或更高版本,您只需拨打deleteSharedPreferences(String name)

即可
context.deleteSharedPreferences("YOUR_PREFS");

但是,没有向后兼容性,因此如果您支持少于24的任何内容,则可以使用apply()进行非阻塞异步操作。

context.getSharedPreferences("YOUR_PREFS", Context.MODE_PRIVATE).edit().clear().apply(); //apply() for non-blocking asynchronous operation 

或者在你的情况下,

PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit().clear().apply();

commit():同步写入数据(阻止调用它的线程)并返回操作成功。

apply():计划要异步写入的数据。它没有通知您操作是否成功。

As per official docuement,如果您不关心返回值并且从应用程序的主要线程中使用此值,请考虑使用apply()代替{{1} }}

答案 3 :(得分:0)

SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(this).edit();
editor.remove("UID");//your key
editor.commit();

clear()可以删除首选项中的所有值。