У меня очень простое приложение для 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. Я пробовал запустить слушатель в Сервисе - тоже самое.