SharedPreferences数据的删除

SharedPreferences数据的删除,对SharedPreferences存储的数据进行删除

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/10616
  • 这篇博客也不错, 你可以看下使用SharedPreferences存储数据
  • 除此之外, 这篇博客: 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的解释:

    • 实现多进程可以通过设置service、broadcast、activity的标签android:process来实现。
    • 一般情况下启动这些组件默认是在同一个进程里运行的,如果设置了android:process标签,则会运行在其他进程里。
    • 如果android:process的value不是”:”开头,则系统里有同样名字的进程的话,会放到已存在的同名进程里运行,这样能减小消耗。
    • 如果android:process的value是以”:”开头,则启动一个名字为value的进程。

    这下明白了我这个activity为什么运行在其他进程了,找到问题原因就可以更改了,由于引用了第三方的sdk sdk的demo都是那么配置的 所以我不打算去掉android:process标签,而是把SharedPreferences配置改成了
    MODE_MULTI_PROCESS 允许多个进程访问同一个SharedPrecferences

    问题得到解决

  • 以下回答由chatgpt基于相关博客总结生成:

    要删除SharedPreferences中存储的数据,可以使用SpUtil类中的deleteKey方法或deleteAll方法。其中deleteKey方法可以删除指定的key对应的值,deleteAll方法可以清空SharedPreferences中所有的值。

    具体实现方法如下:

    1. 首先,在使用SharedPreferences前需要先初始化:
    SpUtil.getInstance().initSp(context);
    

    其中context为当前上下文对象。

    1. 调用deleteKey方法删除指定的key对应的值:
    SpUtil.getInstance().deleteKey("key");
    

    其中"key"为需要删除的key名称。

    1. 调用deleteAll方法清空SharedPreferences中所有的值:
    SpUtil.getInstance().deleteAll();
    

    以上代码实现了通过SharedPreferences删除指定数据或清空所有数据的功能。