Android. Иногда устройство не пробуждается

142
03 декабря 2017, 12:53

Имеется приложение, часть которого работает по типу будильника.

Задача: в определённый момент времени, несмотря ни на что вывести устройство из спящего режима и запустить Activity.

Алгоритм построен с использованием alarmManager.

Так заводится будильник:

                //Работа с Intent для запуска AlarmReciver
                final Intent my_intent = new Intent(getActivity().getApplicationContext(), AlarmRecever.class);
                //Устанавливаем время, на которое нужно завести (Время сейчас + 10 секунд)
                TimeAlarm = SystemClock.elapsedRealtime() + (10 * 1000);
                //Работа с Pending Intent
                pendingIntent = PendingIntent.getBroadcast(getContext(), 0, my_intent, PendingIntent.FLAG_UPDATE_CURRENT); 
                //Работа с Alarm Manager
                alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, TimeAlarm, pendingIntent);

Это код для AlarmReciver, который запускает Activity SignalActivity:

public class AlarmRecever extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        Intent intentSignal = new Intent(context, SignalActivity.class);
        intentSignal.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        ComponentName komponent = intentSignal.getComponent();
        Intent mainIntent = IntentCompat.makeRestartActivityTask(komponent); 
        context.startActivity(mainIntent);//Запускаем Activity "intentSignal"
    }
}

Проблема возникает не всегда, но бывает в ≈10% случаев.

Проблема заключается в том, что, когда экран выключен, устройство не всегда выходит из спящего режима. То есть Activity запускается только тогда, когда пользователь разбудит смартфон (нажмёт например HomeButton).

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

В manifest'e прописал:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />

Могу предположить, что проблема в том, что устройство бывает загруженным и ему не хватает ресурсов на запуск Activity. Вероятно нужно как-то изменить приоритет.

READ ALSO
Custom Chrome Tabs без выбора браузера

Custom Chrome Tabs без выбора браузера

Всем привет! Не могу решить проблему, при которой CastomTabsIntent открывает окно выбора браузераХочется как то пропустить этот момент, что бы сразу...

163
Как правильно написать onBindViewHolder?

Как правильно написать onBindViewHolder?

Как правильно написать onBindViewHolder а то у меня он начинает ругаться на слово cardfeeds

172
Утечка памяти MediaPlayer&#39;a и Media JavaFX&#39;a

Утечка памяти MediaPlayer'a и Media JavaFX'a

Добрый день, написал несложный код

159