SensorEventListener 不会使用 ungisterListener() 方法取消注册
我有非常简单的Android应用程序:在活动中,我有一个按钮,我启动/停止定向管理器。但是,在取消注册后,在ddms中,我仍然可以看到线程android.hardware.SensorManager$SensorThread](正在运行)。
注册码:
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ORIENTATION);
if (sensors.size() > 0)
{
sensor = sensors.get(0);
running = sensorManager.registerListener(sensorEventListener, sensor, SensorManager.SENSOR_DELAY_FASTEST);
}
和取消注册:
try
{
if (sensorManager != null && sensorEventListener != null)
{
sensorManager.unregisterListener(sensorEventListener,sensor);
running = false;
}
}
catch (Exception e)
{
Log.w(TAG, e.getMessage());
}
该方法确实被执行,但是它不会经常杀死传感器线程,这会继续运行并耗尽电池电量。几个小时后,我的应用程序被列出20-30%的电池消耗。这怎么可能?如何确保传感器未注册?我在 logcat 中没有任何异常或任何错误。我尝试在服务中运行侦听器 - 同样的事情。unregisterListener()