Android SensorManager.registerListener(..,处理程序),请举例说明?
我不知道怎么用这个方法 registerListener(SensorEventListener侦听器、传感器、int-rate、处理程序) 1) 如果它使用SensorEventListener,那么处理程序的用途是什么 2) 请给出一个我可以传递给它的处理程序的例子 谢谢 如果它使用SensorEventListener,那么处理程序的用途是什么Android SensorManager.registerListener(..,处理程序),请举例说明?,android,handler,Android,Handler,我不知道怎么用这个方法 registerListener(SensorEventListener侦听器、传感器、int-rate、处理程序) 1) 如果它使用SensorEventListener,那么处理程序的用途是什么 2) 请给出一个我可以传递给它的处理程序的例子 谢谢 如果它使用SensorEventListener,那么处理程序的用途是什么 如果非要我猜的话,那么您可以通过后台线程(例如,HandlerThread)发送传感器事件。默认情况下,传感器事件在主应用程序线程上传递,这在某
如果非要我猜的话,那么您可以通过后台线程(例如,
HandlerThread
)发送传感器事件。默认情况下,传感器事件在主应用程序线程上传递,这在某些情况下是可以接受的。这里有一个示例:
SensorManager mSensorMgr = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);
HandlerThread mHandlerThread = new HandlerThread("sensorThread");
mHandlerThread.start();
Handler handler = new Handler(mHandlerThread.getLooper());
mSensorMgr.registerListener(this, mSensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_FASTEST, handler);
从android SensorManager类的源代码中,您可以看到registerListener()提取处理程序的循环器,以使用此循环器创建一个新的处理程序,并在其中调用onSensorChanged方法
如果您没有传递处理程序,SensorManager将使用主应用程序线程。1)如果它使用SensorEventListener,那么处理程序的用途是什么?
如果你在主线程上运行它,并且你正在做一些繁重的计算,你会减慢主UI的速度,使其没有响应。请始终在单独的线程中编写长时间运行的任务,以避免出现错误
下面是一个例子谢谢你的回答,简洁明了。IMHO这应该添加到官方文档:)您可以在这里声明几个传感器吗?我可以使用传感器的多个参数吗?