Android:哪个线程调用.onSensorChanged?

标签 android multithreading callback sensors runnable

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

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

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

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

谢谢!

最佳答案

Are we CERTAIN about that?

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

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

关于Android:哪个线程调用.onSensorChanged?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17681870/

相关文章:

android - Action 模式关闭按钮文字颜色

python - 如何将元组值作为参数发送到作为线程启动的函数?

javascript - javascript递归调用回调中的函数是否存在内存泄漏?

Javascript/Coffeescript 使用函数哈希作为参数

php - PHP 中的闭包或 create_function

android - 由于 AsyncTask 是一个单独的类,如何将 OnPostExecute() 的结果获取到主要 Activity ?

android动态设置listview高度

android - 如何设置 AlertDialog 自定义标题上边距并删除不需要的 Padding?

ios - 线程运行后快速更改线程 qualityOfService/priority

java - 线程安全策略