美文网首页
记一次Socket通信中引发的ANR

记一次Socket通信中引发的ANR

作者: 笑对浮华 | 来源:发表于2021-04-02 11:34 被阅读0次

ANR属于安卓程序员老生常谈的话题了,入这行就一直听说不能在主线程进行耗时操作,因为安卓是单线程模型,程序启动的时候会创建一个“main”线程,也就是主线程,主线程要定时刷新界面,如果主线程中执行耗时操作,界面刷新不及时,就会造成卡顿,非常不好的用户体验。基于这些基本原则,平时在编程中也会去避免这类操作,但在今天开发调试中有幸遇到了ANR。
多的不唠,出现的场景是:点击按钮后重连socket,在重连之前会断开之前的连接。
最后通过打印时间确认是socket.close()这行代码的问题,这样关闭socket,在这之前要先完成socket本次的读写才会进行关闭,所以在调用close之前要先执mSocket?.shutdownOutput() mSocket?.shutdownInput(),这样问题就解决了。

相关文章

网友评论

      本文标题:记一次Socket通信中引发的ANR

      本文链接:https://www.haomeiwen.com/subject/blifkltx.html