本文主要是介绍关于sendMessage前先把对应消息 removMessage 的做法。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 之前看到公司的代码中看到这种写法,觉得多此一举,直到自己遇到问题:最后用下面的代码解决。
@Overridepublic void onConnected(WebSocket websocket, Map<String, List<String>> headers) throws Exception {super.onConnected(websocket, headers);Log.d("ws", "onConnected");bFlagClosedByUser = false;handler.removeMessages(MSG_REGISTER);handler.sendEmptyMessageDelayed(MSG_REGISTER, 500);}
业务是连接成功后,会发出一个消息,进入注册,心跳环节, 正常情况下,心跳30s一次,但却偶现时间混乱的情况, 间隔不对。多次测试后我抓到如下log:
05-09 19:40:13.127: D/ws(16539): onConnected
05-09 19:40:13.131: D/ws(16539): onConnected
某种情况下, onConnected 会被连续调用2次,用了延迟500ms发消息,并在发消息前remove一次,这样可保证500ms重复的connected回调不会导致发出多个重复消息,一个简单的技巧记录一下。
这篇关于关于sendMessage前先把对应消息 removMessage 的做法。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!