一、前言
前段时间在工作中有一个棘手的问题,接手了一个Android项目,因需要投入使用的设备内存小(RAM1GB)且使用到串口较多,频次较高的原因,在某些页面使用上会出现略微的卡顿,导致用户体验不是特别好,我当时的想法是:如果把1GB换成2GB,那么这把牌将绝杀,可惜设备已经订好了,换不得。
初步决定使用多线程的方式,将串口读写的工作和业务代码分开来,一个是把代码模块化,另外一个是多进程便可以从系统处分配出更多的内存以加快整个APP的响应速度。
二、原理图
先贴一下整个流程的原理图
原理比较清晰,由Service和串口进程通信,我们的Application与Service进行绑定,通过Messenger和Service进行交互,而数据由Application通过Eventbus进行下发给页面
三、实现功能
(一)Service和串口通信
我这边开了两个串口做演示,一个是ttyS0,波特率9600
另外一个是ttyS1,波特率9600
mSerialPortManager1 = new SerialPortManager(new File("/dev/ttyS0"), 9600)
.setOnSerialPortDataListener(new OnSerialPortDataListener() {