У моего проекта есть потребность, необходимо постоянно считывать данные штрих-кода, например, сканер товарного супермаркета со сканирующими штрих-кодами, а затем данные в клавиатуру, но столкнулся с проблемой, в течение длительного времени непрерывное сканирование, загрузка процессора будет очень высокой, даже достигнув 95%, я установил поток для сна в цикле, но не смог решить эту проблему.Слишком высокое значение Cpu, до 95%
Я прошу об этой проблеме, но это может быть слишком грязный код, затрагивающий всех читателей, и теперь упрощайте код, надеюсь, вы можете мне помочь, спасибо вам большое;
Иногда несколько часов на сканировании процессора занимают слишком много, но иногда несколько дней. Grab logcat log обнаружил, что метод сна иногда не выполняется, если не непрерывное выполнение вызовет слишком высокий уровень использования процессора, но я не знаю, почему метод sleep не будет выполняться.
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();
}
Возможный дубликат [Использование процессора приложений в Android очень велико?] (Http://stackoverflow.com/questions/14688222/application-cpu-usage-is-high-in-android) –