维玉 2014-12-24 01:18
浏览 1053

【求助】WebSocketClient、service和sharedpreference的问题

我在service里开了一个WebSocketClient,它在接收服务器消息(onMessage)之后会弹通知,声音和震动是否打开用sharedpreference保存。现在的问题是他在启动之后,我修改sharedpreference,弹通知的时候还是原来的设置,onMessage处理的时候不会获取的最新的设置。求指点

1.sharedpreference绝对写进去了,
2.WebSocketClient重启就好使了
3.我在试图重启的时候先判断WebSocketClient是否为null,不是null就关闭,可是他就是空
4.如果不判断是否null,直接关闭,会报空指针异常

后台log

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

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 删除和修改功能无法调用
    • ¥15 kafka topic 所有分副本数修改
    • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
    • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
    • ¥40 串口调试助手打开串口后,keil5的代码就停止了
    • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
    • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档
    • ¥50 C++五子棋AI程序编写
    • ¥30 求安卓设备利用一个typeC接口,同时实现向pc一边投屏一边上传数据的解决方案。
    • ¥15 SQL Server analysis services 服务安装失败