Таймер, кажется, останавливается, когда экран становится неактивным - PullRequest
2 голосов
/ 20 марта 2010

Итак, у меня есть очень простое действие для Android, которое запускает таймер при нажатии кнопки.

Timer timer = new Timer();<br> timer.schedule(new TimerTask() {<br> @Override<br> public void run() {<br> doStuff();<br> }<br> }, 15 * 60 * 1000);

Так что это работало достаточно хорошо для меня, когда я тестировал, но, как оказалось, когда экран становится неактивным, таймер тоже. Я был немного удивлен этим. Я понимаю, что вам нужно создать сервис, чтобы все работало в фоновом режиме, но я не понял, что это необходимо для активности на переднем плане, когда телефон отключил экран из-за отсутствия активности. Что меня смущает, так это то, что я думаю, это сработало так, как я ожидал изначально, и только в последние несколько недель на таймер повлияло энергосбережение телефона. Хотя я могу ошибаться ..

Итак, в основном мои вопросы: вижу ли я ожидаемое поведение? Нужно ли создавать все таймеры как службы или как-то запретить энергосбережение?

спасибо за любой совет, Patrick

1 Ответ

3 голосов
/ 20 марта 2010

Я был немного удивлен этим.

Когда экран выключается, вскоре после этого процессор выключается. Ваш пользователь Timer не имеет к этому никакого отношения, поскольку это Java, а не Android.

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

Я очень сомневаюсь в этом.

вижу ли я ожидаемое поведение?

Да.

Нужно ли создавать все таймеры как услуги или как-то запретить powersaving

Если у вас есть действие, которое должно держать экран и устройство включенным, используйте:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

Однако это должно быть что-то вроде видеоплеера.

Если вы пытаетесь сделать что-то более похожее на запланированное задание Windows или задание Linux cron, вам нужно будет использовать AlarmManager и IntentService, возможно, WakefulIntentService.

Есть и другие возможности, но я не знаю, что вы пытаетесь построить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...