Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
sjoiton
0 / 0 / 0
Регистрация: 03.12.2014
Сообщений: 5
#1

В спящем режиме останавливаются таймеры - Программирование Android

03.12.2014, 01:25. Просмотров 1758. Ответов 22
Метки нет (Все метки)

Использую такой код:
Java
1
2
3
4
5
6
7
8
9
10
class TimerTaskLoad extends TimerTask {
    @Override
     public void run() {
         Log.i("info", "timer");
    }
}
Timer timer = new Timer();
 
TimerTaskLoad timerTask = new TimerTaskLoad();
timer.schedule(timerTask, 0, 2 * 1000);
Когда в Activity вызывается onPause(или спящий режим в телефоне), то таймеры останавливаются. После onResume снова запускаются. Возможно ли сделать так, чтобы таймеры работали в спящем режиме?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2014, 01:25     В спящем режиме останавливаются таймеры
Посмотрите здесь:
Windows 8.1 выключается в спящем режиме Windows 8, 8.1
Android 4.0.4 Не работает WI-FI в спящем режиме Android
Частота процессора в спящем режиме.
Windows 7 Выполнение процесса в спящем режиме
В спящем режиме возобновляется работа
Утечка оперативной памяти в спящем режиме Windows 8, 8.1
Отключается Wi-fi на планшете (Win 8) при спящем режиме Windows 8, 8.1
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dajver
408 / 272 / 18
Регистрация: 18.09.2010
Сообщений: 1,107
03.12.2014, 12:00     В спящем режиме останавливаются таймеры #2
Засунуть его в сервис или бродкаст и тогда будет работать в спящем режиме... да он всегда будет тогда работать...
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
03.12.2014, 22:27     В спящем режиме останавливаются таймеры #3
используйте AlarmManager и не придется городить сервисы
sjoiton
0 / 0 / 0
Регистрация: 03.12.2014
Сообщений: 5
06.12.2014, 11:35  [ТС]     В спящем режиме останавливаются таймеры #4
Засунуть его в сервис или бродкаст и тогда будет работать в спящем режиме... да он всегда будет тогда работать...
Этот таймер итак находится в сервисе, тот в свою очередь в броадкаст. Это не работает в спящем режиме.
используйте AlarmManager и не придется городить сервисы
Мне нужно каждые 30 секунд выполнять код. Использовать AlarmManager думаю для этого не рационально.
Если я буду использовать AlarmManager, сколько телефон будет "не" в спящем режиме, после того как выполнится alarm?
dajver
408 / 272 / 18
Регистрация: 18.09.2010
Сообщений: 1,107
06.12.2014, 12:36     В спящем режиме останавливаются таймеры #5
Мне нужно каждые 30 секунд выполнять код.
Ну и зачем вам тут таймер? Сделайте бродкаст с задержкой в 30 секунд и будет вам счасте
sjoiton
0 / 0 / 0
Регистрация: 03.12.2014
Сообщений: 5
06.12.2014, 13:19  [ТС]     В спящем режиме останавливаются таймеры #6
Сделайте бродкаст с задержкой в 30 секунд и будет вам счасте
С какой еще задержкой?
dajver
408 / 272 / 18
Регистрация: 18.09.2010
Сообщений: 1,107
06.12.2014, 13:36     В спящем режиме останавливаются таймеры #7
http://www.sitepoint.com/scheduling-...tasks-android/
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
06.12.2014, 16:49     В спящем режиме останавливаются таймеры #8
sjoiton, я вам сразу предложил использовать AlarmManager
sjoiton
0 / 0 / 0
Регистрация: 03.12.2014
Сообщений: 5
07.12.2014, 16:52  [ТС]     В спящем режиме останавливаются таймеры #9
dajver, вы видимо не понимаете, что когда alarmManager вызывает Broadcast, это не значит, что он будет работать вечно. Если телефон уйдет в спящий режим, broadcast и сервисы перестают работать, нужно удерживать телефон не в спящем режиме.

dubok79, Спасибо за совет. А как часто телефон будет находится не в спящем режиме после вызова alarm, если его программно не удерживать в "не" спящем режиме?
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
07.12.2014, 17:55     В спящем режиме останавливаются таймеры #10
Цитата Сообщение от sjoiton Посмотреть сообщение
что когда alarmManager вызывает Broadcast, это не значит, что он будет работать вечно.
А вы почитайте про AlarmManager, а потом делайте выводы. Если вы поставите ему RTC_WAKEUP, то аларм будет срабатывать всегда и будить устройство.
Кстати, сервис тоже не умрет если ему назначить соответствующие параметры. Почитайте и он нем
sjoiton
0 / 0 / 0
Регистрация: 03.12.2014
Сообщений: 5
08.12.2014, 08:12  [ТС]     В спящем режиме останавливаются таймеры #11
Если вы поставите ему RTC_WAKEUP, то аларм будет срабатывать всегда и будить устройство.
После того, как он разбудит устройство, оно через N времени снова заснет, если программно ему это не запретить.

Кстати, сервис тоже не умрет если ему назначить соответствующие параметры.
Какие параметры? Сервис не влияет на работу процессора.
yura91
29 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,238
19.05.2016, 23:22     В спящем режиме останавливаются таймеры #12
А вы почитайте про AlarmManager, а потом делайте выводы. Если вы поставите ему RTC_WAKEUP, то аларм будет срабатывать всегда и будить устройство.
Кстати, сервис тоже не умрет если ему назначить соответствующие параметры. Почитайте и он нем
Какие параметры нужно назначить сервису?
stix357
0 / 0 / 0
Регистрация: 27.05.2016
Сообщений: 9
Завершенные тесты: 2
27.05.2016, 18:32     В спящем режиме останавливаются таймеры #13
Что-нибудь получилось?
sjoiton
Добавлено через 10 минут
Рекомендуют использовать:
https://developer.android.com/refere...tReceiver.html
Но я не совсем понял: отработает WakefulBroadcastReceiver, запустит сервис, но его самого кто запустит?
Просто мучаюсь с аналогичной проблемой с сервисе
есть в нем Timer, но если интервал отработки Timer-а меньше времени ухода тела в сон, то все, тишина.
AlarmManager должен отработать, но ...... будет ли он отдельный поток запускать ...

Добавлено через 2 минуты
Цитата Сообщение от yura91 Посмотреть сообщение
Какие параметры нужно назначить сервису?
Поддерживаю вопрос.

Добавлено через 3 минуты
Цитата Сообщение от sjoiton Посмотреть сообщение
После того, как он разбудит устройство, оно через N времени снова заснет, если программно ему это не запретить.
Разве, что будить постоянно
Java
1
2
3
4
5
6
7
8
9
10
 Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        calendar.add(Calendar.MINUTE, mSendGeoPeriod);
        mCalendarTime = calendar.getTimeInMillis();
 
 
        mAM = (AlarmManager) getApplicationContext().getSystemService(ALARM_SERVICE);
        Intent intentAlarm = new Intent(getApplicationContext(), LocalityService.class);
        mAM.cancel(pendingIntent);
        mAM.setRepeating(AlarmManager.RTC_WAKEUP, mCalendarTime, mSendGeoPeriod * 1000*60, pendingIntent);
Добавлено через 3 минуты
Цитата Сообщение от sjoiton Посмотреть сообщение
Если я буду использовать AlarmManager, сколько телефон будет "не" в спящем режиме, после того как выполнится alarm?
По идее столько, сколько указано в настройках тела.

Добавлено через 1 час 38 минут
Цитата Сообщение от sjoiton Посмотреть сообщение
dajver, вы видимо не понимаете, что когда alarmManager вызывает Broadcast, это не значит, что он будет работать вечно. Если телефон уйдет в спящий режим, broadcast и сервисы перестают работать, нужно удерживать телефон не в спящем режиме.
Вечно удерживать не стоит ..... батарея загнется
Это не спасает:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
   
    @Override
    public void onCreate() {     
//после нажатия кнопки питания сохраняется только блокировка сна PARTIAL_WAKE_LOCK
        mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
        mWakeLockState=PowerManager.PARTIAL_WAKE_LOCK;
        mWakeLock = mPowerManager.newWakeLock(mWakeLockState, "UMSE PowerTest");
        if (mWakeLock != null) {
            mWakeLock.acquire();
       }
......
    @Override
 
    public void onDestroy(){
        if (mWakeLock != null) {
            mWakeLock.release();
            mWakeLock = null;
        }
....
yura91
29 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,238
27.05.2016, 18:57     В спящем режиме останавливаются таймеры #14
PowerManager можно. Он не даст уйти в сон устройству пока не завершиться задача. Там есть методы посмотрите. Как вариант можно использовать.

Добавлено через 30 секунд
У самого сервиса вроде нет таких параметров
stix357
0 / 0 / 0
Регистрация: 27.05.2016
Сообщений: 9
Завершенные тесты: 2
27.05.2016, 20:42     В спящем режиме останавливаются таймеры #15
Цитата Сообщение от yura91 Посмотреть сообщение
PowerManager можно. Он не даст уйти в сон устройству пока не завершиться задача. Там есть методы посмотрите. Как вариант можно использовать.
И с гарантией убьет батарею ......
Цитата Сообщение от yura91 Посмотреть сообщение
У самого сервиса вроде нет таких параметров
Я не нашел.
Посему либо будить постоянно
Либо не знаю пока .......
Гугловские сервисы как-то стучатся для обновления .....
Или просто перехватывают перевод из спячки и втихаря стучатся на гугло маркет (пока хозяин тела добрый и из спячки сам вывел)

Добавлено через 17 минут
Цитата Сообщение от yura91 Посмотреть сообщение
PowerManager можно. Он не даст уйти в сон устройству пока не завершиться задача. Там есть методы посмотрите. Как вариант можно использовать.
Есть абсолютно дурной вариант: генерить в сервисе искуственно Ексепшен и он ....... перезапустится. Но это зло.
yura91
29 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,238
27.05.2016, 20:52     В спящем режиме останавливаются таймеры #16
Если после выполнения задачи вызвать realise у PowerManagera то устройство сможет опять уйти в спячку. Главное вовремя снять PowerManager после выполнения задачи тогда все норм. Если конечно задача не очень длинная.
stix357
0 / 0 / 0
Регистрация: 27.05.2016
Сообщений: 9
Завершенные тесты: 2
27.05.2016, 20:55     В спящем режиме останавливаются таймеры #17
Цитата Сообщение от yura91 Посмотреть сообщение
Если после выполнения задачи вызвать realise у PowerManagera то устройство сможет опять уйти в спячку.
Да, но потом следующий вызов таймера пролетает. Девайс уже спит ........
Мда, эмуляторы в Андроид студии эту ситуацию не отрабатывают - по ходу у них спячки нет.
yura91
29 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,238
27.05.2016, 20:55     В спящем режиме останавливаются таймеры #18
Просто представьте у вас сервис выполнял некую задачу и вы Alarmom его будете. Он начнет выполнять задачу сначала, а вам сначала не нужно постоянно ее выполнять. Вам нужно один раз до конца ее выполнить.
stix357
0 / 0 / 0
Регистрация: 27.05.2016
Сообщений: 9
Завершенные тесты: 2
27.05.2016, 21:14     В спящем режиме останавливаются таймеры #19
Цитата Сообщение от yura91 Посмотреть сообщение
Просто представьте у вас сервис выполнял некую задачу и вы Alarmom его будете. Он начнет выполнять задачу сначала, а вам сначала не нужно постоянно ее выполнять. Вам нужно один раз до конца ее выполнить.
А в этом случае после побудки мне вывесит цать эвентов, если они в задаче есть. А это крайне нежелательно
НО! Если сервис уснул, то придется задачу снять незавершенную и заново перезапустить.
Я думаю, что таймеры из сервиса надо убирать. А на отработку Alarmа повесить что-то вроде
Java
1
private class MyAsyncTask extends AsyncTask<String, Integer, Integer> {..........
Добавлено через 6 минут
Цитата Сообщение от yura91 Посмотреть сообщение
Он начнет выполнять задачу сначала, а вам сначала не нужно постоянно ее выполнять. Вам нужно один раз до конца ее выполнить.
Поток все одно должен отработать....
Потом спячка. А потом новый аларм. Но, блин, опять батарею жрать будет алармы промежутком мин на 15-20 ставить надо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2016, 21:19     В спящем режиме останавливаются таймеры
Еще ссылки по теме:
Windows 8, 8.1 Доступ к принтеру когда Win8 в спящем режиме
IBM Thinkpad T30 - включается в спящем режиме
Windows 8, 8.1 Раньше ноутбук отключался на старте, теперь в спящем режиме
MSI GE60 2OE, свист в спящем режиме, и не только ...
Samsung NP355V5C-A06; не мигает индикатор питания в спящем режиме

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
yura91
29 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,238
27.05.2016, 21:19     В спящем режиме останавливаются таймеры #20
Поток все одно должен отработать....
Почему вы так уверены что он отработает до конца? Он уснуть может вполне. Ну я не знаю конечно вашу задачу, если вам удобно каждый раз перезапускать незавершенную задачу сначала то......
Yandex
Объявления
27.05.2016, 21:19     В спящем режиме останавливаются таймеры
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru