Я сделал простую программу Android GPS для отслеживания местоположения устройства в пассивном режиме. Чтобы сохранить процессор, я использую блокировку слежения, но он не является надежным. Иногда приложение работает в течение 3 часов. Иногда он может делать полный 24-часовой цикл. Я не получаю отчет о сбоях на экране - приложение просто останавливается без каких-либо указаний. Срок службы батареи прекрасен.Wakelock не всегда поддерживает мое приложение
Я объявляю wakelock в качестве основного класса активности переменной
static WakeLock 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, который я могу проверить, чтобы узнать, почему мое приложение остановилось?
«Есть ли какие-либо механические взаимодействия, которые могут убить используемый вакелон, например, прикреплять шнур питания или USB-кабель?» - нет. «Почему мое приложение остановилось?» - потому что Android прекратил ваш процесс, скорее всего. Процессы не живут вечно. – CommonsWare