android 串口读数导致界面卡死

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 串口读数导致界面卡死相关的知识,希望对你有一定的参考价值。

需要用子线程去读取数据,当数据读取完成,通过handler 发送一个消息让主线程去更新UI 参考技术A 通信故障?

WPF 解决界面卡死

工作中的项目,CS客户端会通过MQ接收前端设备发送的信息,之前测试的时候,由于测试的数据不大,没有进行压力测试,软件可以正常工作,随着项目现场设备数量的增加,CS客户端从MQ中订阅的数据量不断增加,最终导致,客户端界面卡死。原来的数据流程图如下:

技术分享图片

 

 这个数据流程,在数据不大的情况下,是没有什么问题,数据太多,从mq获取数据的流程太长,不管是Json反序列化,还是WPF界面渲染,都是耗时比较大。所以决定将数据流程改为如下所示:

技术分享图片

 

 

 修改后的方案,将原来的一个流程拆分两个流程,左边的流程只负责从mq取数据的流程,少了原来中间的Json反序列化和界面渲染的流程,提高了取数据的能力;右边的流程是ViewModel层主动定时从缓存队列取数据的流程,这里面根据业务的实际场景,根据订阅的设备,每个设备最多取界面能够显示的最大数量,这样就很好地解决了界面卡死的问题,不管前端设备上传了多少数据,实际客户端显示的数据最多是一定的,订阅设备的数量 X  界面最大显示的数量。

 

 

 

 

 

 

 

 

 

 

以上是关于android 串口读数导致界面卡死的主要内容,如果未能解决你的问题,请参考以下文章

android 人脸考勤机 卡死原因

Android系统服务死锁Anr检测机制

Android系统服务死锁Anr检测机制

Android开发之串口通信:AndroidSerialPort

android从加速度计读数中删除重力

使用Android studio 创建flutter项目时卡死在 Creating flutter project