7

我已经阅读了一些关于哪个线程调用各种回调方法的讨论,例如与传感器相关的那些。大多数人声称 UI 线程调用回调 - 即使涉及单独的工作线程。我们确定吗?

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

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

我很难想象 UI 线程会在这种情况下调用回调。然而,网上的讨论却相当“自信”。有人确定吗?

谢谢!

4

1 回答 1

6

我们确定吗?

是的,尽管这取决于您如何注册侦听器,并且该行为并没有特别详细的记录。

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

于 2013-07-16T16:27:03.423 回答