SharedPreferences数据的删除,对SharedPreferences存储的数据进行删除
开发中每次登录成功后都会获取一个服务器返回的Token,退出后再重新登录Token的值就会变化
我发现在一个activity中每次获取的都是上一次的值,也就是退出在登录后在这个activity中获取的值还是上一次保存的值,这样就导致出现了bug,而其他activity读取都没有问题
经过搜索一番发现我设置的SharedPreferences的mode类型是 MODE_PRIVATE,而api的解释是:MODE_PRIVATE:代表私有访问模式,在Android 2.3及以前这个访问模式是可以跨进程的,之后的版本这个模式就只能访问同一进程下的数据。
难道我这个activity是运行在其他进程,可是我并没有设置什么其他进程啊,开发时跟别的activity都是一样的,后来发现这个activity引用了第三方sdk vitamio,在manifest配置里这个activity多了一条属性android:process=":vitamio"
android:process标签的作用是 看看api的解释:
这下明白了我这个activity为什么运行在其他进程了,找到问题原因就可以更改了,由于引用了第三方的sdk sdk的demo都是那么配置的 所以我不打算去掉android:process标签,而是把SharedPreferences配置改成了MODE_MULTI_PROCESS
允许多个进程访问同一个SharedPrecferences
问题得到解决
要删除SharedPreferences中存储的数据,可以使用SpUtil类中的deleteKey方法或deleteAll方法。其中deleteKey方法可以删除指定的key对应的值,deleteAll方法可以清空SharedPreferences中所有的值。
具体实现方法如下:
SpUtil.getInstance().initSp(context);
其中context为当前上下文对象。
SpUtil.getInstance().deleteKey("key");
其中"key"为需要删除的key名称。
SpUtil.getInstance().deleteAll();
以上代码实现了通过SharedPreferences删除指定数据或清空所有数据的功能。