Поток обработчика Android занимает больше времени, когда экран выключен

Я написал простое приложение, в котором есть действие и служба (запускается на переднем плане). Служба должна выполнять периодическую работу, поэтому я создаю обработчик и периодически отправляю сообщение обработчика.

class ServiceHandler extends Handler {
    public ServiceHandler(Looper looper) {
        super();
    }
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {
        case 1:
            // do my job here
            this.sendEmptyMessageDelayed(1, 15000);
        }
    }
}

Я думаю, что моя работа должна выполняться каждые 15 секунд и никогда не заканчиваться, пока моя служба не будет убита пользователем.

но когда я выхожу из активности (длительное нажатие клавиши меню, сметает активность) и выключаю экран. Кажется, моя работа выполняется со случайным интервалом (все дольше, чем 15 с), иногда даже дольше, чем 1 минута.

Я думаю, что это, вероятно, связано с политикой энергопотребления системы Android.

как я могу заставить свою работу выполняться с фиксированным интервалом в таких обстоятельствах. Пожалуйста, помогите.


person SalutonMondo    schedule 29.04.2015    source источник


Ответы (1)


Когда вы удаляете свои действия из списка недавних действий, процесс завершается платформой Android. Таким образом, ваш ServiceHandler должен прекратить обработку.

В соответствии с хорошей практикой разработчик должен добавить код для stop обработки такой службы в onDestroy()

person Kushal    schedule 29.04.2015
comment
спасибо за ваш ответ, но мой обработчик создан в службе, для которой установлен приоритет приоритета. и я ожидаю, что он продолжит работу после удаления основного действия, я ожидаю, что обработчик будет продолжать цикл и периодически обрабатывать сообщения. Если я ошибаюсь, есть ли лучший способ заархивировать мою цель? Не могли бы вы дать мне какую-нибудь подсказку, спасибо. - person SalutonMondo; 29.04.2015