今天做了一个demo,在service里面接收到广播之后,启动一个dialog样式的activity(每隔几秒弹出一次),dialog上有个按钮,点击之后将preference中的一个key设为false,然后service中的广播里面判断为false就不执行,但是结果是每次点击按钮修改key之后,service再次获取的key并没有做相应改变,也就是说preference存的已经变成false,但是service取出来依旧为true。
解决方法:因为我在manifest的这个service标签下加了process属性,去掉可恢复正常。
探究:有人说preference的mode问题,把private(0)改成MODE_MULTI_PROCESS(4),尝试过未能解决,根本原因还是process标签。
android:process