Страницы

Поиск по вопросам

суббота, 13 июля 2019 г.

Убивается Alarm Manager

Добрый день! Пытаюсь сделать Alarm Manager, который каждую минуту будет выполнять определенные действия. Происходить это должно постоянно, не убиваться системной и при перезагрузке телефона запускаться. Однако при очистке недавних приложений и перезагрузке телефона аларм убивается.
Запускаю Alarm Manager
public void startAlarm(Context context) {
AlarmManager manager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); Intent myIntent; PendingIntent pendingIntent;
myIntent = new Intent(context,AlarmNotificationReceiver.class); pendingIntent = PendingIntent.getBroadcast(context,0,myIntent,0);
Calendar cur_cal = new GregorianCalendar(); cur_cal.setTimeInMillis(System.currentTimeMillis());//set the current time and date for this calendar
manager.setRepeating(AlarmManager.RTC_WAKEUP, cur_cal.getTimeInMillis(),60*1000,pendingIntent); }
Receiver
public class AlarmNotificationReceiver extends BroadcastReceiver {
private Context context;
@Override public void onReceive(Context context, Intent intent) {
//... }
Receiver в Android manifest

Что я делаю не так??


Ответ

Вам нужны 2 ресивера или один, но принимающий указание на то, что он должен делать. Ваша проблема в том, что вы задаёте очередь для AlarmManager только в активити. В итоге, после загрузки девайса у вас ваш ресивер вызовется... Но очередь для Alarm Manager не будет создана и более он вызван не будет.
Т.е. надо каждый раз при срабатывании ресивера на событие запуска девайса заново задавать очередь для Alarm Manager.
Попробуйте так:
Один ресивер для события запуска - в нём повторите код установки очереди для Alarm Manager. Т.е. и в нём, и в активити задавайте очередь. Отдельный ресивер для приёма событий от Alarm Manager - в нём к-л логика

Комментариев нет:

Отправить комментарий