Я делаю приложение, которое подключает прослушиватели местоположения и датчиков, чтобы затем записывать изменения из них в файл.
Что странно, так это то, что один из телефонов, использующих приложение, в некоторых случаях закрывался принудительно, что я сузил до изменения ориентации: если телефон изменил ориентацию во время записи, атрибут SensorManager, который я сохранил внутри действия как «mSensorManager», тогда будет установить на ноль.
Это приводит к моему вопросу: не следует ли мне хранить ссылку SensorManager из-за того, что это плохой выбор дизайна? Или это нормально, и я должен просто проверить, является ли ссылка нулевой, прежде чем использовать ее?
EDIT: две вещи, которые нужно добавить:
Я обнаружил, что не только атрибуты акселерометра и магнитометра также были обнулены (что имело смысл), но и менеджер местоположения (который не вносит особых изменений, так как не имеет ничего общего с определением ориентации);
Должен ли я хранить эти атрибуты внутри чего-то другого, кроме действия, которое не аннулирует ссылки при изменении ориентации?
Что это дало мне: исправление инстанцирования прослушивателя, менеджера и сенсора, которое должно выполняться в рамках жизненного цикла действия. Тогда единственная проблема была с вейк-локом, который был разрушен, но мне нужно было удержаться при смене ориентации. Я изменил его, чтобы он также приобретался в течение жизненного цикла активности, хотя и на другой фазе.