Prevenir notificación PendingIntent inicia Actividad ya iniciada?

El servicio crea una Notification persistente e inicia la actividad principal al hacer clic en PendingIntent . Aquí está el código.

 Intent notificationIntent = new Intent(getApplicationContext(), ViewPagerActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(StreamingService.this, 0, notificationIntent, 0); 

Sin embargo, si la actividad principal se inicia cuando presione notificación, se iniciará de nuevo , y de nuevo y …

Al final, tengo la misma actividad pilled, uno encima de otro. Puedo ver esto presionando el botón de la parte posterior, que matará la actividad principal una vez y después me volveré a la misma actividad hasta que cierre la última.

¿Cómo puedo evitar que esto suceda? ¿Puede PendingIntent detectar que la actividad de apuntamiento se está ejecutando para que no vuelva a crear la misma actividad, sino que se inicie la ejecución?

PD. Me disculpo si no puedo explicar esto bien. Si este es el caso, hágamelo saber y voy a reformular el problema.

Dependiendo del comportamiento exacto que desee implementar, puede pasar uno de estos indicadores como el último parámetro de getActivity ():

  • FLAG_ACTIVITY_REORDER_TO_FRONT
  • FLAG_ACTIVITY_SINGLE_TOP

También encontré esta solución. Añadir este atributo a Manifest

  <activity android:name=".MyActivity" android:label="@string/app_name" android:launchMode="singleTop" // <-- THIS LINE > 

Para cada Activity necesita esta función. Hasta ahora funciona sin errores en absoluto.

¿Qué solución es mejor? El mío es más fácil, si no es nada.

Intente usar otro valor en REQUEST_CODE. No utilice el valor predeterminado 0 en REQUEST_CODE.

O tu pendingIntent reiniciará tu actividad.

Si desea utilizar el ciclo de actividad normal, ingrese el valor de la solicitud al crear PendingIntent.

 PendingIntent resultPendingIntent = PendingIntent.getActivity( context, REQUEST_CODE, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.