Android 一种等待传感器数据的方法

Android 一种等待传感器数据的方法,android,wait,android-sensors,android-event,Android,Wait,Android Sensors,Android Event,我有一个类,它在传感器侦听器启动时启动它。当触发事件时,此侦听器将最新的传感器值写入变量。该类继续执行一些逻辑,并在某个时候检查该变量,然后根据该值继续 我的问题是,无法保证读取变量时会有任何值,因为Android传感器侦听器仅在传感器值更改时触发事件(并且不一定在启动时立即触发事件) 因此,我需要我的应用程序等待事件触发,这样它就有数据可以处理(最好有一个超时,以确保它不会无限期地等待) 我的问题是,实施这种等待的最佳方式是什么?我是否应该有一个处理程序,在继续之前每隔X毫秒检查一个值?我是否

我有一个类,它在传感器侦听器启动时启动它。当触发事件时,此侦听器将最新的传感器值写入变量。该类继续执行一些逻辑,并在某个时候检查该变量,然后根据该值继续

我的问题是,无法保证读取变量时会有任何值,因为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);
            }

        });

这不是严格意义上的android,而是一般的java问题。实现这一点的机制是java.lang.Oject中的容器。假设您有一些保护对象,生产者线程和消费者线程都可以访问这些对象。在您调用的消费者线程上:

guard.wait(some_optional_delay_Look_into_javadoc);
然后,cosumer线程将等待,直到超时ocurs或hell冻结或生产者线程问题:

guard.notify[All]();
(阅读文档)


您的服务侦听器将是生产者

你有你所指文档的链接吗?好的,谢谢。是否有实现保护块的集合类,或者我应该手动实现它?您可以使用任何对象来实现它。事件,我理解。我只是想知道是否存在处理消费者/生产者关系的现有数据结构。