Oreo AlarmManager не работает в фоновом режиме - PullRequest
0 голосов
/ 28 ноября 2018

Я хочу запустить службу уведомлений с AlarmManager.Тем не менее, это не всегда работает, когда сильно ударил приложение в слое недавних задач.Я также опробовал JobIntentService и JobService с собственными записями в манифесте, все привело к одной и той же проблеме: Notification или также startActivity () не вызывают (иногда !, может быть, в режиме ожидания?) После того, как я закрылapp.

Теперь я подумал, что, возможно, вернусь к AlarmManager, так как он здесь работает для других людей.

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
        {
            AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);

            Intent intent = new Intent(getActivity(), AlertReceiver.class);
            PendingIntent pendingIntent = PendingIntent.getBroadcast(getActivity(), 1, intent, 0);

            if(Build.VERSION.SDK_INT <= 23)
            {
                alarmManager.setExact(AlarmManager.RTC_WAKEUP, timeForAlarm, pendingIntent);//Alarm with setExact and AlertReceiver should be better than the old Alarm Manager
            }
            else
            {
                alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, timeForAlarm, pendingIntent);//Alarm with setExact and AlertReceiver should be better than the old Alarm Manager

            }
          }
        else
        {
            final AlarmManager alarm = (AlarmManager) getContext().getSystemService(Context.ALARM_SERVICE);

            Intent intent = new Intent(getActivity(), Service_Notification.class);

            PendingIntent startPendingIntent = PendingIntent.getService(getActivity(), 0, intent, 0);
            alarm.set(AlarmManager.RTC_WAKEUP, timeForAlarm, startPendingIntent);
        }

Это мой AlertReceiver для версий выше KitKat (я такжепопробовал расширяет BroadCastReceiver)

public class AlertReceiver extends WakefulBroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        context.startService(new Intent(context, Service_Notification.class));
    }
}

Итак, что мне теперь делать?Заранее спасибо

...