Я сделал простое приложение службы отслеживания GPS для Android, чтобы регистрировать местоположение устройства в пассивном режиме. Чтобы ЦП продолжал работать, я использую блокировку пробуждения, но это ненадежно. Иногда приложение работает по 3 часа. Иногда он может выполнять полный 24-часовой цикл. Я не получаю никакого отчета о сбое на экране — приложение просто останавливается без каких-либо указаний. Срок службы батареи в порядке.
Я объявляю wakelock как основную переменную класса активности
static WakeLock wakeLock;
И установите блокировку один раз прямо перед запуском службы GPS.
PowerManager pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock((PowerManager.PARTIAL_WAKE_LOCK),"MyAppNameWakelock");
wakeLock.setReferenceCounted(true);
wakeLock.acquire();
По причинам смены экрана я также обновил функцию BackButton, чтобы она запускала moveTaskToBack(true);
вместо обычных операций. Может ли это иметь какое-то отношение к этому?
Существуют ли какие-либо механические взаимодействия, которые могут вывести из строя вейклок при использовании, например подключение шнура питания или USB-кабеля?
Впоследствии, есть ли какой-либо журнал в Android, который я могу проверить, чтобы узнать, почему мое приложение остановилось?