項目場景:
提示:這里簡述項目相關背景:
例如:項目場景:示例:通過藍牙芯片(HC-05)與手機 APP 通信,每隔 5s 傳輸一批傳感器數據(不是很大)
問題描述
提示:這里描述項目中遇到的問題:
例如:數據傳輸過程中數據不時出現丟失的情況,偶爾會丟失一部分數據
APP 中接收數據代碼:
@Overridepublic void run() {bytes = mmInStream.read(buffer);mHandler.obtainMessage(READ_DATA, bytes, -1, buffer).sendToTarget();}
原因分析:
提示:這里填寫問題的分析:
例如:Handler
發送消息有兩種方式,分別是 Handler.obtainMessage()
和 Handler.sendMessage()
,其中 obtainMessage
方式當數據量過大時,由于 MessageQuene
大小也有限,所以當 message
處理不及時時,會造成先傳的數據被覆蓋,進而導致數據丟失。
解決方案:
提示:這里填寫該問題的具體解決方案:
例如:新建一個 Message
對象,并將讀取到的數據存入 Message
,然后 mHandler.obtainMessage(READ_DATA, bytes, -1, buffer).sendToTarget();
換成 mHandler.sendMessage()
。