我在Android中编写应用程序,在那里我从麦克风获取数据,它工作正常,我能够保存声音的振幅。我可以更新进度条。
barraThread = new Thread(new Runnable() {
public void run(){
while (isRecording){
actualizarBarra(getAmplitud());
//lector.setText(String.valueOf(getAmplitud()));
}
}
},"barra Thread");
-Where:actualizarBarra(getAmplitud());用实际幅度更新进度条的值。
我的问题是,如果我尝试从那一点更新textView,我会收到错误(
“只有创建视图层次结构的原始线程才能触及它 意见“。
所以我尝试使用“处理程序”更新textView并使用“runOnUiThread(new Runnable(){...”但应用程序运行速度非常慢,有时会崩溃。你知道更新进度条的方法吗? textview同时,以适当的方式?,
使用runOnUiThread解决方案。
private void actualizarInterfaz() {
runOnUiThread(new Runnable() {
@Override
public void run() {
actualizarBarra(getAmplitud());
lector.setText(String.valueOf(getAmplitud()));
}
});
}
然后循环:
while(isRecording){
actualizarInterfaz();
}
没有错误,只是应用程序被冻结,所以我在LogCat上看不到任何日志,就像正常运行但实际上没有。 感谢
答案 0 :(得分:1)
您应该仅在UI(主)线程上更新TextView。处理程序方法是可以的(还有其他方法)。至于性能问题,我怀疑录制的频繁更新。尝试在更新视图时引入延迟,而不是每次都更新