Android глубокий сон и бодрствование

Я создал приложение для Android, которое отлично работает на всех телефонах. Но в моем телефоне Alcatel это не так, поскольку телефон переходит в режим глубокого сна, и сеть передачи данных выходит из строя, поэтому приложение не получает сеть передачи данных и не синхронизирует данные с сервера.


Мой дизайн...

SystemBootReceiver -> (DataSyncService)Service -> (MyBroadcastReceiver)BroadcastReceiver -> (MyDataService)Service,

Итак, здесь при загрузке системы я начинаю DataSyncService где я настроил AlarmManager (повторяется) и вызвать MyBroadcastRecever, После вызова BroadcastRecever я остановился DataSyncService позвонив stopself(),

Теперь MyBroadcastRecever вызывает MyDataService,


Я наткнулся на WakeLocks, которые, как говорится, не позволяют телефону переходить в режим глубокого сна. Так я реализовал это внутри MyDataServiceonCreate() метод

PowerManager pm = (PowerManager) 
                    getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
mWakeLock.acquire();

А также release() блокировка после остановки службы.

Я также установил разрешение в Android Manifest.

Но это не сработало. Поэтому для быстрой проверки я использовал приложение WAKE LOCK с маркета.

Но это также не разбудило телефон. Снова я наткнулся на приложение WAKE MY ANDROID (приложение удалено из магазина) с маркета и установил его... и тут произошло волшебство.

Он поддерживал телефон в живых.

Как описание в этом приложении говорит, что они также использовали Wake Lock, Так чего же мне тогда не хватает?

Ошибка реализации или проблема дизайна?

1 ответ

Решение

Блокировка в вашем сервисе никогда не работает - потому что ваш сервис никогда не запускается

Хорошо - вы должны использовать WakefulIntentService - сделать ваш MyDataService простираться WakefulIntentService и в вашем приемнике вызова WakefulIntentService.doWakefulWork(context, MyDataService.class)

Или реализуйте статическую блокировку, разделяемую как вашим сервисом, так и получателем - что было бы сложно.

Если вы используете Wi-Fi, вам также нужно использовать WifiLock - внутри вашего бодрствующего намерения - может быть сложно

Другие вопросы по тегам