Уведомление с помощью alarm Manager не отображается при закрытии приложения

#android #kotlin #notifications #alarmmanager

#Android #kotlin #уведомления #alarmmanager

Вопрос:

Я тестирую отправку уведомлений с помощью alarm Manager при закрытии приложения. Прямо сейчас после нажатия кнопки через 10 секунд запускается уведомление, и я закрываю приложение. Уведомление отображается, когда приложение открыто, но не при закрытии.

Вот мой код:

Запуск уведомления в TimeTableScheduleActivity:

 private fun setUpAlarm(c: Calendar){
        val cal = Calendar.getInstance()
        cal.add(Calendar.SECOND, 10)
        val alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
        val intent = Intent(this, AlertReceiver::class.java)
        val pendingIntent = PendingIntent.getBroadcast(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT)
        Toast.makeText(this, "notification in 10 secs", Toast.LENGTH_SHORT).show()
        alarmManager.set(AlarmManager.RTC_WAKEUP, cal.timeInMillis, pendingIntent)
    }
  

Класс AlertReceiver:

 class AlertReceiver : BroadcastReceiver(){

    override fun onReceive(context: Context?, intent: Intent?) {

        val intent = Intent(context, TimeTableScheduleActivity::class.java)
        intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
        val pendingIntent = PendingIntent.getActivity(context, 100, intent, PendingIntent.FLAG_UPDATE_CURRENT)

        val builder = NotificationCompat.Builder(context!!, Navigation.CHANNEL_ID)
                .setSmallIcon(R.mipmap.ic_stat_call_white)
                .setLargeIcon(BitmapFactory.decodeResource(context!!.getResources(), R.mipmap.icon_round))
                .setContentTitle("title")
                .setContentText("body")
                .setColor(Color.parseColor("#138FF7"))
                .setContentIntent(pendingIntent)
                .setVibrate(longArrayOf(100, 200, 300, 400, 500, 400, 300, 200, 400))
                .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
                .setLights(Color.WHITE, 500, 500)
                .setPriority(NotificationCompat.PRIORITY_HIGH)

        val notificationManagerCompat = NotificationManagerCompat.from(context)
        notificationManagerCompat.notify(1, builder.build())
        Toast.makeText(context,"alert receive",Toast.LENGTH_LONG).show()
    }

}
  

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

1. Попробуйте использовать #setExact , поскольку все сигналы тревоги неточны после API19. Посмотрите документы , чтобы получить лучшее представление об этом.

2. Я пробовал setExact и setExactAndAllowWhileIdle оба, но ни один из них не работает