Android 使用 sharedPreferences

本地储存了一个 boolean 变量
开启了 一个 Service 一直在 读取这个boolean 比如我一直读取的是 true;
我在Activity 中更改 这个 boolean 为 false 但是 服务中查询出来还是 为 true;
MODE 我设置的 MODE_PRIVATE,MODE_MULTI_PROCESS,MODE_APPEND
这三种 都不起作用!

SharedPreferences属于操作的是xml文件需要耗时的,service轮训去校验这个值导致其他线程对SharedPreference的操作受阻。commit方法是有返回值的,看看是否修改成功。
另外利用SharePreferences来实现多线程之间的通讯很不优雅。。。可以利用发通知等方法实现。

从你的叙述中我感觉好像不应该

你确定你有edit.commit(); 这句话看你有没写?

在Activity 中更改后需要保存到sharedPreferences,我猜你用的时候是直接读的sharedPreferences

这是更改的时候的地方 在 Fragment里面
!这是在服务中获取 值的 代码! 大家帮忙看看!
sharedPreferences = UpLoadService.this.getSharedPreferences(ShareName, UpLoadService.MODE_MULTI_PROCESS);
editor = sharedPreferences.edit();实例化代码!

看下有没有调edit.commit(),在service是开了线程一直获取吗,在acitivty更改是否是在获取之前,获取和设置的key和sharedPreferences的名字有没有对应上

在服务中获取需要这行代码(editor = sharedPreferences.edit();实例化代码!)干什么???
是每次轮询都实例化sharedPreferences ,还是只实例化一次多次轮询

你在服务中获取的sharedPreferences 的key对吗?

谢谢 各位了! sharedPreferences 我是规范 使用的! 原因可能出现与 我在服务中 轮询 导致线程冲突!
之前的问题! 我自身做了一些优化! 不再使用 sharedPreferences 使用 广播和回调! 完美解决。

首先 这个跟MODE 是没有关系的,可以打断点看你设置为false的代码执行了吗?再取找其他问题。

首先 你的问题和mode没关系 你可以打下断点 看看你写的代码执行了吗

很明显你忘了commit