Android BroadcastReceiver срабатывает с задержкой при нажатии на действие уведомления

Я пытаюсь запустить процедуру повтора при нажатии на действие уведомления, для этого я создал BroadcastReceiver а также зарегистрировал его в AndroidManifest файл.

При создании уведомления с действием я использую PendingIntent и установка этого ожидающего намерения с помощью действия уведомления.

Когда приложение работает или работает в фоновом режиме (не удаляется из списка недавних приложений), широковещательный приемник принимается мгновенно после нажатия на действие уведомления. Но после убийства приложения (удаления его из списка недавних приложений) широковещательный приемник запускает некоторые из них.

Ниже приведены фрагменты кода для различных компонентов.

AndroidManifest файл

      <receiver android:name=".Receiver.RetryStatusBroadcastReceiver" android:enabled="true" android:exported="false"/>

Приемник вещания

      public class RetryStatusBroadcastReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        
    }
}

Код активации уведомления

      Intent retryIntent = new Intent(this, RetryStatusBroadcastReceiver.class);
PendingIntent retryPendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), uniqueId + 1, retryIntent, 0);
NotificationCompat.Action retryAction = new NotificationCompat.Action(R.drawable.ic_retry, "Retry", retryPendingIntent);

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, getString(R.string.background_syncing_notification_channel_id))
        .setSmallIcon(R.drawable.app_logo)
        .setPriority(Notification.PRIORITY_HIGH)
        .setDefaults(Notification.DEFAULT_ALL)
        .setContentTitle(notificationTitle)
        .setContentText(notificationMessage)
        .setStyle(new NotificationCompat.BigTextStyle().bigText(notificationMessage))
        .setAutoCancel(true)
        .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
        .addAction(retryAction);

Intent intent = new Intent(this, HomeActivity.class);

PendingIntent activityPendingIntent = PendingIntent.getActivity(this, uniqueId, intent, PendingIntent.FLAG_ONE_SHOT);
notificationBuilder.setContentIntent(activityPendingIntent);
notificationBuilder.setAutoCancel(true);

NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
if (notificationManager != null) {
    notificationManager.notify(uniqueId, notificationBuilder.build());
}

Я также попытался расширить свой BroadcastReceiver с WakefulBroadcastReceiverно результат тот же. Я также попытался удалить android:enabled а также android:exported теги, но, похоже, здесь ничего не работает.

0 ответов