Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Actividad de inicio mediante notificación: Evitar actividades duplicadas

Por lo tanto, estoy mostrando una notificación. Cuando el usuario hace clic en esta notificación, se inicia la aplicación. La notificación persiste, para indicar que el servicio se está ejecutando en segundo plano.

Intent notificationIntent = new Intent(context, LaunchActivity.class); PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0); notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); mNotificationManager.notify(1, notification); 

Sin embargo, he detectado un caso en el que aparece un error. Si el usuario inicia la aplicación haciendo clic en el icono normal y mientras la actividad se está ejecutando, hace clic en la notificación, se iniciará una nueva actividad sin que la anterior salga, la última que se encuentre encima de la anterior. Y eso no es todo: otros clics en la notificación crearán actividades adicionales y las colocarán encima de las que ya se estén ejecutando. ¿Cómo puedo evitar esto? ¿Hay un buen cheque que hacer para ver si una actividad determinada se está mostrando o se carga?

  • SearchView setQuery no funciona
  • Desarrollo de dos aplicaciones para Android y comunicación entre dos
  • Forma adecuada para agregar columnas de índice en greenDao?
  • ¿Cómo manejo una pulsación de retroceso en una aplicación de Android de Delphi?
  • Android Studio mac OS X Mavericks
  • Diálogo para escoger la imagen de la galería o de la cámara
  • En el módulo BillingService, ¿qué necesita modificarse para aumentar la seguridad?
  • Actualización de la vista de lista cuando los datos del adaptador cambian
  • Cómo evitar la conexión Bluetooth RFCOMM de morir inmediatamente después de .connect ()?
  • EXCEPCIÓN INESPERADA DE SUPERIOR NIVEL: com.android.dex.DexException: Múltiples archivos dex definen
  • Realizar cambios persistentes en init.rc
  • Gravedad de TextView
  • 3 Solutions collect form web for “Actividad de inicio mediante notificación: Evitar actividades duplicadas”

    Esa es la forma en que se supone que es por defecto. Es probable que necesite especificar android:launchMode="singleTop" si desea tener una única instancia.
    Hay 4 modos de lanzamiento, más información aquí: https://developer.android.com/guide/topics/manifest/activity-element.html

    Cuando se utiliza lanchMode="singleTask" , si ya existe una intención de su actividad, Android no vuelve a crear la actividad, sino que la onNewIntent() con el método onNewIntent() .

    Según lo documentado por Android:

    El sistema crea la actividad en la raíz de una nueva tarea y orienta la intención hacia ella. Sin embargo, si ya existe una instancia de la actividad, el sistema direcciona la intención a una instancia existente a través de una llamada a su método onNewIntent (), en lugar de crear una nueva.

    Documentación de Android para el modo de actividad

    Como las dos respuestas anteriores han mencionado, usted querrá establecer el modo de inicio de la aplicación que se define en la definición de la actividad en el manifiesto:

     <activity android:name="com.company.ActivityName" android:launchMode="singleTask"> </activity> 

    Además, es posible que desee tener en cuenta que a pesar de que FLAG_ACTIVITY_SINGLE_TOP es un indicador de intención válido, no hay banderas de intenciones equivalentes para singleTask o singleInstance.

    Consulte la sección launchMode para obtener más detalles sobre las diferentes opciones del modo de inicio: http://developer.android.com/guide/topics/manifest/activity-element.html#lmode

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.