安卓在线程中循环中渲染文本

在实际开发中,有时会遇到需要循环等待结果的场景,在这种场景下,有时候渲染文本会不及时或者失效,这里给一种解决思路。

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();
    }
}

你可能感兴趣的:(安卓,android,java,前端,后端)