Configuración de Android AppWidget – Comienza en una nueva tarea

He buscado y buscado y buscado esto!

Así que tengo un widget de aplicación y tiene una actividad de configuración que puedo abrir al pulsar un botón en la aplicación. El escenario es:

Si la aplicación se abriera.

Cerró la aplicación con el botón de inicio.

Seleccionado para añadir mi widget

He configurado el widget.

Colocado en mi pantalla de inicio

A continuación, abra de nuevo la actividad de configuración con el botón del widget.

Cancelar la nueva configuración pulsando volver me volverá a poner en la aplicación.

Cuando presione hacia atrás quiero regresar a casa.

Básicamente lo que estoy pidiendo es. ¿Cómo inicio la actividad de configuración en su propia tarea / pila?

He mirado en los filtros de intención, pero yo no estoy muy seguro, o tal vez es algo que ver con el paquete que está en, o tal vez no es posible!

Supongo que puede tener algo que ver con la intención que utilizo para iniciar la actividad de configuración

Intent configIntent = new Intent(this, Configuration.class); configIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); remoteView.setOnClickPendingIntent(R.id.config, PendingIntent.getActivity(this, 0, configIntent, PendingIntent.FLAG_UPDATE_CURRENT)); 

Tal vez porque lo inicie con 'this' como contexto, siempre se iniciará en mi pila de aplicaciones … pero la api de intención pendiente es: PendingIntent API 1 "Tenga en cuenta que la actividad se iniciará fuera del contexto de una actividad existente "

Así que sí voy a dejar de hablar ahora como acabo de ir en círculos!

EDITAR

Así que probado android:launchMode="singleInstance" en el manifiesto como se dijo. Esto funcionó sin embargo detiene el comportamiento 'startActivityForResult' funcionando correctamente. (que es toda la razón de una actividad de configuración) Obtener el error:

WARN / ActivityManager (59): La actividad se está iniciando como una nueva tarea, cancelando así el resultado de la actividad.

Así que todavía no han encontrado una solución.

Ok ordenado 🙂 necesario:

 android:taskAffinity="" 

en el manifiesto, establecer la afinidad de la tarea con una cadena vacía permite que la actividad se inicie en su propia pila, ya que no está "afiliada" al resto de la aplicación.

ACTUALIZAR

He cambiado la afinidad de la tarea a: android: taskAffinity = "com.my.package.alternative.task" ya que cada vez que lancé la actividad que estaba apareciendo varias veces en el "historial". Así que ahora comienza en su propia pila, pero se comparte con otras instancias de la misma actividad.

También necesitas agregar la Flag Intent.FLAG_ACTIVITY_NO_HISTORY a tu intención 🙂 Esto detiene tu tiempo de obtención de su aplicación en la historia cuando se mantiene pulsado el botón de inicio.

ACTUALIZAR

He notado que FLAG_ACTIVITY_NO_HISTORY no estaba haciendo lo que quería, lo he eliminado y agregado:

 android:excludeFromRecents="true" 

en la etiqueta de actividad en el manifiesto también. La actividad ahora se comporta como yo quiero 🙂

Tengo esta respuesta del siguiente link trail: Tasks & Back Stack | Gestión de tareas | Etiqueta de afiliación

Trate de poner android: launchMode = "singleInstance" para una actividad de la aplicación en AndroidManifest.xml

  • Cómo hacer que la aplicación de Android que "come" la memoria RAM
  • Android, veo que el montón crece, pero quiero que pare
  • Prueba de memoria de Android
  • Alto uso de memoria RAM para la aplicación vacía de Android
  • Cómo agrupar las notificaciones de Android como whatsapp?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.