Android:哪个线程调用.onSensorChanged?

时间:2013-07-16 16:18:59

标签: android multithreading callback sensor runnable

我已经阅读了一些关于哪个线程调用各种回调方法的讨论,例如与Sensors相关的回调方法。大多数人声称UI线程调用回调 - 即使涉及单独的工作线程。我们是否对此有所了解?

考虑这种情况:一个单独的类实现了Runnable和SensorListener。 UI线程(在onCreate期间)启动runnable,然后返回其他业务。现在独立的工作线程在其自己的类中注册SensorListener。

请注意,UI线程永远不会与SensorManager或SensorListener进行任何交互。唯一涉及与Sensor有关的线程,以及它所知道的唯一类和成员方法,是工作线程及其类。

我很难想象UI线程会在这种情况下调用回调。然而,在线讨论非常“自信”。有人知道吗?

谢谢!

1 个答案:

答案 0 :(得分:5)

  

我们是否对此有所了解?

是的,虽然这取决于你如何注册听众,但行为并没有特别详细记录。

有两种registerListener()方法需要SensorEventListener。一个需要Handler,另一个不需要。后者将使用与主应用程序线程关联的Handler。如果您希望将事件传递到后台线程,请使用HandlerThread(实际上应该称为LooperThread,但他们没有问我......),创建一个{{1}在其中,并将HandlerHandler一起使用。