我正在从设备传感器(多个传感器)中读取传感器数据,并调用一个方法来显示从传感器接收到的数据到设计的TextView中。
我正在调用的更新TextView的方法:
private void UpdateDataStream(String _Entry,Boolean isAppend)
{
if(isAppend)
ViewHolder.append("\n("+sensorName+")"+_Entry);
else
ViewHolder.setText("("+sensorName+")"+_Entry);
}
从 SensorEventListener's 的 onSensorChanged 事件调用的方法。
我不知道如何在更新TextView时防止冻结;由于传感器数据更新非常频繁(考虑到它同时来自多个传感器),因此更新TextView会导致应用程序冻结或崩溃。 我不需要“打印”我收到的每个数据,就像我每1-2秒打印一次就足够了,丢失的数据可以忽略不计。
是否有任何方法/模式或内置结构来实现这一目标? (我是Java和Android编程的新手,但是我熟悉多编程,并行编程的概念,但是我不知道如何在这种环境中应用它们)
答案 0 :(得分:1)
这是最快的解决方案: https://github.com/ReactiveX/RxJava http://reactivex.io/documentation/operators/debounce.html
或者您可以:
thread#1
堆积thread#2
中,每 N 次从堆栈中读取最后一个数据(别忘了同步它们)textView.post( () -> textView.setText("safe call") );