我已经阅读了一些关于哪个线程调用各种回调方法的讨论,例如与Sensors相关的回调方法。大多数人声称UI线程调用回调 - 即使涉及单独的工作线程。我们是否对此有所了解?
考虑这种情况:一个单独的类实现了Runnable和SensorListener。 UI线程(在onCreate期间)启动runnable,然后返回其他业务。现在独立的工作线程在其自己的类中注册SensorListener。
请注意,UI线程永远不会与SensorManager或SensorListener进行任何交互。唯一涉及与Sensor有关的线程,以及它所知道的唯一类和成员方法,是工作线程及其类。
我很难想象UI线程会在这种情况下调用回调。然而,在线讨论非常“自信”。有人知道吗?
谢谢!
答案 0 :(得分:5)
我们是否对此有所了解?
是的,虽然这取决于你如何注册听众,但行为并没有特别详细记录。
有两种registerListener()
方法需要SensorEventListener
。一个需要Handler
,另一个不需要。后者将使用与主应用程序线程关联的Handler
。如果您希望将事件传递到后台线程,请使用HandlerThread
(实际上应该称为LooperThread
,但他们没有问我......),创建一个{{1}在其中,并将Handler
与Handler
一起使用。