Android: BroadcastReceiver () onReceive вызывается, когда приложение приостановлено

#android #push-notification #android-notifications #android-broadcastreceiver

#Android #push-уведомление #android-уведомления #android-broadcastreceiver

Вопрос:

У меня есть BroadcastReceiver(), и метод onReceive вызывается, даже когда приложение приостановлено / мертво. Я хочу, чтобы onReceive вызывался только тогда, когда пользователь открывает уведомление с главного экрана, как я могу это сделать?

Основной класс:

  broadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {

            }
    };

    final Intent intent = registerReceiver(broadcastReceiver, intentFilter);
  

Класс BroadcastReceiver

  Intent intent;
    if(rootActivity.getPackageName().equalsIgnoreCase("myapp"))
    {
        //your app is open
        intent = new Intent();
        intent.setComponent(rootActivity);

    } else {
        //your app is not open,start it by calling launcher activity
        intent = new Intent(context, MainActivity.class);
    }

    intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    mBuilder.setContentIntent(contentIntent);
  

Манифест

  android:launchMode="singleTop"
  

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

1. Просто отмените регистрацию вашего получателя, когда ваша активность будет уничтожена.

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

3. Если я отменю регистрацию получателя, уведомления не будут получены, когда приложение находится в состоянии «принудительной остановки». Возможно ли получать уведомления в этой ситуации? Я вижу, что приложение Twitter делает, например…

4. На самом деле никаких уведомлений после принудительной остановки не требуется для Android, поэтому отмена регистрации работает!