У меня есть приложение, которое использует IntentService для работы в фоновом режиме, даже если оно закрыто.
Есть кнопка, которая запускает фоновый процесс и появляется уведомление. Это уведомление не исчезнет, пока пользователь не нажмет другую кнопку, которая останавливает IntentService.
Но здесь у меня возникла другая проблема. Я запускаю приложение в первый раз. Затем нажмите кнопку, которая инициализирует IntentService, появится уведомление. Сразу после этого, когда приложение все еще находится на экране, я нажимаю уведомление, и похоже, что приложение создает его дубликат. Я могу нажать на уведомление несколько раз, и создается много копий приложения.
Только что нашел несколько советов, таких как добавление флагов в PendingIntent и вставка некоторых строк в манифест, но пока ничего не помогло.
Может быть, мне нужно что-то изменить в уведомлении или намерении в ожидании?
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
createNotificationChannel()
val notificationIntent = Intent(this, MainActivity::class.java)
val pendingIntent = PendingIntent.getActivity(
this,
0, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT
)
val notification = NotificationCompat.Builder(this, CHANNEL_ID)
.setContentTitle("Foreground Service Kotlin Example")
.setContentText("kylsha")
.setSmallIcon(R.drawable.ic_notification)
.setContentIntent(pendingIntent)
.build()
startForeground(1, notification)
return super.onStartCommand(intent, flags, startId)
}
Вот как это выглядит
Я хочу, чтобы уведомление запускало действие только тогда, когда приложение закрыто или свернуто, а не создавало несколько копий этого что-то нужно сделать, чтобы pendingIntent
?