CPU占用率太高,最高可达到95%

baidu_34872610 2017-01-03 05:50:17
最近一个项目里有需求,需要持续不断的从条形码中读取数据,持续读取时间无上限,可能几天甚至几个星期,代码写好,但是发现长时间(有时几个小时有时几天)扫描CPU占用率出奇高,最高达95%,截取log未报任何异常, 然后系统就GG了,只能重启;
下面贴出简化後的Code , 哪位大侠遇到过或能提供思路,甚至解决方案,在下感激不尽!!!!

private void startReceive() {
stopReceive = false;
new Thread(new Runnable() {
@Override
public void run() {
int timeout = 1000;
while (!stopReceive) {
if (mUsbDeviceConnection != null) {
try {
byte[] receiveBytes = new byte[64];
int value = mUsbDeviceConnection.bulkTransfer(mUsbEndpoint, receiveBytes,
receiveBytes.length, timeout);
if (value > 0) {
for (int i = 2; !stopReceive && i < receiveBytes.length; i++) {
byte b = receiveBytes[i];
if (b != 0) {
result += new String(new byte[]{b});
}
if (!stopReceive && !result.equals("") && result != null) {
Runtime.getRuntime().exec("input text " + result);
}
}
}
Thread.sleep(100);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
}).start();
}
...全文
260 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
baidu_34872610 2017-01-03
  • 打赏
  • 举报
回复
忘了加写说明了,while循环已sleep, 多次验证无效; 考虑到扫描速率问题,Process.waitFor()不予采用,速度至少会降低60%;

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧