在实际开发中,有时会遇到需要循环等待结果的场景,在这种场景下,有时候渲染文本会不及时或者失效,这里给一种解决思路。
private void startAsrThread() {
Handler handler = new Handler();
new Thread(() -> {
// Send all data
while (startRecord || bufferQueue.size() > 0) {
try {
short[] data = bufferQueue.take();
if (Recognize.getStatus()) {
String punc = getPunc(result);
start.set(start.get() + result.length());
lastAsr.append(punc);
// textView.setText(punc);
// 通过handler实现
handler.post(() -> textView.setText(punc));
} else {
if ("".equals(lastAsr.toString())) {
String finalResult = result;
handler.post(() -> textView.setText(finalResult));
} else {
handler.post(() -> textView.setText(lastAsr.toString()));
}
}
});
} catch (InterruptedException e) {
Log.e(LOG_TAG, e.getMessage());
}
}
}).start();
}
}