SensorEventListener не отменяется с помощью метода unregisterListener ()

У меня очень простое приложение для Android: в процессе работы у меня есть кнопка, и я запускаю / останавливаю OrientationListener. Однако после отмены регистрации в ddms я все еще вижу поток android.hardware.SensorManager $ SensorThread] (Running) .

Код регистрации:

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());
}

Метод unregisterListener () действительно выполняется, однако он не очень часто убивает поток датчиков, который продолжает работать и разряжает аккумулятор. . Через несколько часов мое приложение будет разряжено на 20-30%. Как такое возможно? Как я могу убедиться, что датчик не зарегистрирован? Я не получаю никаких исключений или ошибок в logcat. Я пробовал запустить слушатель в Сервисе - тоже самое.

28
задан jacek 2 August 2011 в 22:40
поделиться