Имеется приложение, часть которого работает по типу будильника.
Задача: в определённый момент времени, несмотря ни на что вывести устройство из спящего режима и запустить 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. Вероятно нужно как-то изменить приоритет.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Всем привет! Не могу решить проблему, при которой CastomTabsIntent открывает окно выбора браузераХочется как то пропустить этот момент, что бы сразу...
Как правильно написать onBindViewHolder а то у меня он начинает ругаться на слово cardfeeds