问题描述
- 【求助】WebSocketClient、service和sharedpreference的问题
- 我在service里开了一个WebSocketClient,它在接收服务器消息(onMessage)之后会弹通知,声音和震动是否打开用sharedpreference保存。现在的问题是他在启动之后,我修改sharedpreference,弹通知的时候还是原来的设置,onMessage处理的时候不会获取的最新的设置。求指点
1.sharedpreference绝对写进去了,
2.WebSocketClient重启就好使了
3.我在试图重启的时候先判断WebSocketClient是否为null,不是null就关闭,可是他就是空
4.如果不判断是否null,直接关闭,会报空指针异常详细的解说如下:
我的推送可以设置声音和震动,使用sharedpreference保存的,现在的问题是修改完声音和震动是否打开之后,service里无论是打开文件还是接收activity传过来的boolean值,log的时候都是修改之前的值,只有退出登录才能好用,不知道为什么
后来我检查了一下,只要重启WebSocketClient就行了(这个service就是管理WebSocketClient的),但是我先判断一下WebSocketClient是否为空,不为空就关闭重启,但是他不知道怎么回事,WebSocketClient就是空,不走关闭的if语句
如果不判断直接关闭又会报空指针
如果不关闭,直接再开一个新的websocket,后台每次和服务器握手的时候,会log两次,一次是修改前的一次是修改后的,然后过一会服务器发现有两个websocket,就会判断是登录了两个账号,就断开连接了
就是他明明每隔一段时间就接受一次服务器的休息,不就是不是空的吗?可是我要重启的时候他就是判断是空的,不走if
另:
service开启的时候就开始每隔几秒检查一下网络连接,一旦网络状态发生变化,就开启WebSocketClient重新连接服务器然后onMessage是监听服务器返回的消息的,然后onMessage里会用handler具体处理服务器消息,读取sharedpreference弹通知什么的。
这个handler就是上图里我在接收服务器消息的时候log的地方