2011-02-25 15 views

Respuesta

46

Creo que el problema es que SingleInstance no permite que el destinatario de la llamada a la actividad existe en la misma tarea que la persona que llama, por lo que no puede devolver el valor de la persona que llama .

considerar el uso de singleTask lugar:

singleTask

El sistema crea la actividad en el raíz de una nueva tarea y rutas intención de ella. Sin embargo, si ya existe una instancia de la actividad, el sistema enruta la intención a la instancia existente mediante una llamada a su método onNewIntent(), en lugar de creando una nueva.

SingleInstance

Igual que "singleTask", excepto que el sistema no se inicia cualquier otro actividades en la tarea que sostiene la instancia . La actividad siempre es el único y único miembro de su tarea .

http://developer.android.com/guide/topics/manifest/activity-element.html

+5

Si 'onActivityResult' depende de tener padre e hijo en la misma tarea, ¿no debería estar documentado en algún lugar? Estoy lidiando con una falla intermitente a través de 'onActivityResult' wtf. – mwengler

+3

No creo que esto sea correcto, lo intenté y SingleTask no se activó en ActivityResult cuando finalizó. Este StackOverflow parece indicar lo mismo: http://stackoverflow.com/questions/8960072/onactivityresult-with-launchmode-singletask –

+0

@ jt-gilkeson la pregunta a la que se vinculó está hablando sobre el modo de lanzamiento del ** target * * 'Actividad' (es decir, la que estás intentando lanzar.La pregunta de OP es hablar sobre el modo de lanzamiento de ** calling ** 'Activity' (es decir, el que llama' startActivityForResult() '). Esta respuesta es correcta porque una 'Activity' con el modo de lanzamiento' singleTask' ** puede ** iniciar otras actividades en su tarea (pero una 'Activity' con el modo de lanzamiento' singleInstance' no puede). –

4

Una actividad "singleInstance" no permite que otras actividades formen parte de su tarea. Es la única actividad en la tarea. Si comienza otra actividad, esa actividad se asigna a una tarea diferente. La actividad siempre es el único y único miembro de su tarea.
Creo onActivityResult no funcionará con singleInstance

5

Si una actividad es singleInstance, que será el único en la tarea por lo que siempre será la parte superior de la tarea. Por lo tanto, cuando llame al startActivityForResult, activará el método de devolución de llamada inmediatamente.

0

No puede usar singleInstance o singleTask con el método startActivityForResult.

El modo estándar o el modo de inicio singleTop solucionarán el problema.

Cuestiones relacionadas