我有一个类,它在启动时启动传感器侦听器。当事件触发时,此侦听器将最新的传感器值写入变量。该类继续执行一些逻辑,并在某个时刻检查此变量并根据值继续操作。
我的问题是,无法保证读取变量时有任何值,因为 Android 传感器侦听器仅在传感器值更改时触发事件(并且不一定在启动后立即触发事件)。
因此,我需要我的应用程序等待事件触发,以便它有数据可以处理(最好有超时,以确保它不会无限期地等待)。
我的问题是,实现这种等待的最佳方法是什么?我是否应该有一个处理程序在继续之前每 X 毫秒检查一次值?我是否应该在侦听器和处理程序之间传递某种消息来告诉它数据何时写入,并且现在可以恢复?还有其他更好的选择吗?
编辑:我应该指出,类逻辑是在 UI 线程上执行的。
我正在使用处理程序来处理完全相同的情况。
Handler handler = new Handler();
handler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
x1.setText(String.valueOf(sensors.getValueAccX()));
Log.d("Sensors", String.valueOf(sensors.getValueAccZ()));//using persoanl methods that are not shown here
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
Toast.makeText(ClientSideActivity.this,
"Server is not running", Toast.LENGTH_LONG).show();
// TODO Auto-generated catch block
e.printStackTrace();
}
// TODO Auto-generated method stub
handler.postDelayed(this, 100);
}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)