Добрый день! Пытаюсь сделать 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 - в нём к-л логика
Комментариев нет:
Отправить комментарий