Убивается Alarm Manager

308
31 мая 2017, 03:46

Добрый день! Пытаюсь сделать 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

   <receiver android:name=".service.AlarmNotificationReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
        <action android:name="android.intent.action.QUICKBOOT_POWERON" />
    </intent-filter>
    </receiver>

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

Answer 1

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

Т.е. надо каждый раз при срабатывании ресивера на событие запуска девайса заново задавать очередь для Alarm Manager.

Попробуйте так:

  1. Один ресивер для события запуска - в нём повторите код установки очереди для Alarm Manager. Т.е. и в нём, и в активити задавайте очередь.
  2. Отдельный ресивер для приёма событий от Alarm Manager - в нём к-л логика
READ ALSO
Как убрать шапку в приложении (Не ActionBar)

Как убрать шапку в приложении (Не ActionBar)

Добрый день, как называется эта полоска и как её убрать ?

302
Android: самый простой способ установки полупрозрачного цвета неактивным иконкам

Android: самый простой способ установки полупрозрачного цвета неактивным иконкам

Рассматривается задача установки полупрозрачного цвета неактивным иконкам на табах (по гайдлайнам иконки должны быть прозрачными на 30%)

196
Вызвать функции из dll

Вызвать функции из dll

Можно ли из java кода вызвать готовые функции из dll, написанного на C++, а не писать dll изначально под java?

227
Как добавить флаг в JVM?

Как добавить флаг в JVM?

Добрый день, работаю с сервером на java в документации к нему говориться что следует для его запуска добавить в jvm флаг, дословно

240