在我的应用程序中,我使用了地点选择器。地点选择器提供的数据使用共享首选项发送到 3 个不同的 Activity 。并在 TextView 中显示此数据。问题是当我关闭 Activity 并再次打开该 Activity 时,我的数据仍然可见在 TextView 中。甚至当我在 onDestroy()
中清除它时。
这是我从地点选择器发送数据的代码:
SharedPreferences settings = getSharedPreferences("city_address", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString("city_address", (String) cityAddress);
editor.putString("city_name", (String) city);
editor.commit();
Intent intent = new Intent(this, CleanlinessActivity.class);
startActivity(intent);
在 CleaninessActivity 的 onCreate() 中使用此代码设置数据
SharedPreferences settings = getSharedPreferences("city_address", Context.MODE_PRIVATE);
String n = settings.getString("city_name", "Enter Location");
String a = settings.getString("city_address", "");
cityname.setText(n);
cetlocation.setText(a);
我在 CleaninessActivity 中使用此代码清除了数据
@Override
protected void onDestroy() {
super.onDestroy();
SharedPreferences settings = getSharedPreferences("city_address", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.remove("city_address");
editor.clear().commit();
}
最佳答案
关闭应用程序意味着只需单击主页按钮,然后 onDestroy()
就不会被调用,您可以回顾一下 Android 生命周期 here
如果您所做的只是单击主页按钮,请考虑将代码移至 onStop()
,否则您需要在 remove(. ..)
android 文档指出“在编辑器中标记应删除首选项值,一旦调用 commit(),这将在实际首选项中完成。”
关于android - Activity 关闭时共享首选项数据未清除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49413879/