我读过一些关于哪个线程调用各种回调方法的讨论,例如与传感器相关的回调方法。大多数人声称 UI 线程调用回调 - 即使涉及单独的工作线程。我们确定吗?
考虑这种情况:一个单独的类实现 Runnable 和 SensorListener。 UI 线程(在 onCreate 期间)启动可运行对象,然后返回到其他业务。现在独立的工作线程在其自己的类中注册 SensorListener。
请注意,UI 线程永远不会与 SensorManager 或 SensorListener 进行任何交互。唯一与 Sensor 相关的线程以及它所知道的唯一类和成员方法是工作线程及其类。
我很难想象 UI 线程会在这种情况下调用回调。然而网上的讨论却相当“自信”。有人确切知道吗?
Thanks!
我们确定吗?
是的,尽管这取决于您注册侦听器的方式,并且该行为没有特别详细的记录。
那里有两个registerListener()
方法采用SensorEventListener
。一个需要一个Handler
,另一个没有。后一个将使用Handler
与主应用程序线程关联。如果您希望将事件传递到后台线程,请使用HandlerThread
(这确实应该被称为LooperThread
,但他们没有问我...),创建一个Handler
并使用它Handler
with registerListener()
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)