Cuales son los indicadores de uso de Android

Tengo una aplicación que recibe una difusión desde el AlarmManager . Después de esto, se inicia una Activity transparente ( AlarmAlertDialogActivity ) que muestra un AlertDialog . Al hacer clic en Cancelar en el resultado de AlertDialog en una llamada a finish() .

Dado que la AlarmAlertDialogActivity no se inicia desde otra Activity sino un receptor de difusión, se inicia con

 Intent.FLAG_ACTIVITY_NEW_TASK 

Esto significa que la Actividad se iniciará en una nueva tarea.

Mi problema es que cuando se relanza la aplicación de la historia reciente después de cancelar el AlertDialog (es decir, manteniendo pulsado el botón de inicio y haciendo clic en el icono de la aplicación) se relanza AlertDialog. Había esperado usar las banderas finish() / Intent que podría evitar esto; Lo que me gustaría que suceda es la última Activity antes de que la actividad principal de AlertDialog sea ​​lanzada.

He intentado bitmasking Intent.FLAG_ACTIVITY_NO_HISTORY como bandera adicional al lanzar AlarmAlertDialogActivity pero esto parece no hacer ninguna diferencia.

Bitmasking Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS funciona, pero solo quitando la aplicación del historial reciente (como su nombre indica). Esto es perjudicial para la experiencia del usuario.

Entonces, ¿es posible obtener el flujo de IU que estoy buscando?

UPDATE – más información solicitada:

Logcat de Broadcast receptor, la actividad AlertDialog y mi actividad principal:

  05-30 10:36:00.132: D/everyOtherApp(362): Received alarm broadcast at: Wed May 30 10:36:00 GMT+00:00 2012 05-30 10:36:00.262: D/everyOtherApp(362): AlarmAlertDialogActivity.onCreate() 05-30 10:36:00.912: D/everyOtherApp(362): AlarmAlertDialogActivity.onResume() 05-30 10:36:12.461: D/everyOtherApp(362): Cancel pressed //Cancel exits the activity. I now relaunch the app from recent history: 05-30 10:36:20.233: D/everyOtherApp(362): AlarmAlertDialogActivity.onCreate() 05-30 10:36:21.621: D/everyOtherApp(362): AlarmAlertDialogActivity.onResume() 

Código para iniciar Actividad de BroadcastReceiver:

  Intent intent = new Intent(new Intent(applicationContext, AlarmAlertDialogActivity.class)); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra(Constants.SCHEDULED_ALARM_TAG, alarm); applicationContext.startActivity(intent); 

AlarmAlertDialogActivity en el archivo manfest:

  <activity android:name=".AlarmAlertDialogActivity" android:theme="@android:style/Theme.NoDisplay" > </activity> 

Hice algo similar en otro proyecto. Tuve un BroadcastReceiver que recibió información sobre conectividad de datos y cambios en el perfil de SIM y mostró un diálogo (usando una actividad como la suya) advirtiendo al usuario que podría incurrir en cargos. Lo que acabé haciendo fue el siguiente:

En el manifiesto, en la etiqueta <Activity> para su AlarmAlertDialogActivity, agregue lo siguiente:

 android:excludeFromRecents="true" android:noHistory="true" android:taskAffinity="" 

Explicación: establecer excludeFromRecents y noHistory como "true" aseguran que la actividad no aparecerá en la lista de aplicaciones recientes y también que una vez que el usuario se aleje de ella no podrá volver allí (lo que probablemente es lo que usted quiere). Establecer taskAffinity a la cadena vacía garantiza que AlarmAlertDialogActivity se ejecute en su propia tarea incluso si la aplicación se ejecuta cuando se muestra el diálogo.

Siempre y cuando tengas otra actividad que funcione como actividad principal de tu aplicación (es decir: con filtros de intención para action.MAIN y category.LAUNCHER ) esto debería resolver tu problema.

  • Cómo utilizar la intención de elegir el navegador de archivos para seleccionar el archivo
  • Android Intent No se puede resolver el constructor
  • Obtener Broadcast recibir cuando la tarjeta SD está desmontando android
  • Android google play juegos seleccionar actividad para iniciar cuando se hace clic en la notificación
  • Android: lanzar aplicación desde el receptor de difusión
  • Cómo eliminar la tarea de inicio automático en Android
  • Android - Cómo interceptar la intención de 'Instalar aplicación'
  • No obtener sms incluso cuando se establece la mayor prioridad e instaló primero
  • Cómo mostrar la actividad transparente en la otra actividad sin eliminar la actividad anterior
  • Cómo iniciar una nueva actividad en android
  • Pausa de envío al marcador
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.