10

Estoy enviando un intento de la cámara de una actividad que llamo así:actividad impiden ser destruida

Intent testphoto = new Intent(Dashboard.this,CameraHandler.class); 
startActivity(testphoto); 

En la clase CameraHandler que llamar a la cámara:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
startActivityForResult(intent, 0); 

Pero antes de llamar al onActivityResult en la clase de manipulador de cámara, la actividad se destruye. ¿Hay alguna forma de prevenir esto?

ENCONTRÉ LA RESPUESTA: Tenía en mi androidmanifest nohistory = true y eso hizo que el sistema operativo destruyera la actividad antes del resultado.

+0

¿cómo sabes su conseguir ¿destruido? – dymmeh

+0

He puesto un Log en el método OnDestroy(), probé una sola aplicación con una sola actividad y funciona bien, pero cuando empiezo a usar esto en una aplicación más compleja, la actividad se destruye antes de que la cámara devuelva la imagen – Diego

+0

Si ha encontrado su propia respuesta, publíquela y acepte su propia respuesta para cerrar la pregunta. Gracias. – davidcesarino

Respuesta

3

No tiene que preocuparse de que la llamada Activity se destruya cuando llame al startActivityForResult(), ya que no cambiará el comportamiento esperado (es decir, la actividad secundaria recordará pasar el resultado al padre si el el padre es destruido o no). Vea esto post.

También tenga en cuenta que, si bien a veces es necesario para evitar Activity s de ser destruido (es decir, sobre los cambios de configuración, etc.), en general, que desea salir del ciclo de vida Activity solo y dejar que el sistema logran fondo Activity s para usted. Una vez que inicie un nuevo Activity, no debe evitar explícitamente que se destruyan los Activity anteriores.

+2

Lo único es que de repente en ActionResult nunca se llama, cuando tengo una aplicación con una sola actividad, la actividad nunca se destruye, pero se llama onActivityResult, ahora cuando en otra aplicación, de repente la actividad se destruye y el resultado parece que nunca vuelve. . ¿Alguna idea de cómo puede ser eso? – Diego

+0

Quizás haya algún problema con su flujo de trabajo. Parece extraño que estés llamando 'startActivityForResult()' dos veces. Definitivamente debe llamar a 'startActivityForResult()' al iniciar la aplicación de la cámara real, pero no estoy tan seguro de que la necesite para la clase 'CameraHandler'. ¿Cuál es la clase 'CameraHandler' de todos modos? ¿Es posible iniciar la aplicación de la cámara directamente desde el tablero? –

+0

Necesito una pantalla en el medio, por lo que directamente desde el panel de control no es una opción, encontré que startActivityForResult evitaría destruir la actividad, pero no es así, así que de hecho podría eliminarlo. El Manejador de cámara envía el intento a la cámara y carga una foto en el resultado de actividad, lo que no sucede ahora ... – Diego

29

Asegúrate de que no tienes activada la configuración del desarrollador "No mantener actividades", ya que destruirá la actividad que estás dejando.

+0

QA informó un problema: solo pude reproducirlo en el teléfono que usan. ¡No pude entender por qué sale la actividad ket! No sabía acerca de este ajuste hasta que vi tu comentario. Gracias :) – ajh158

+0

estaba solo en mi tableta ... el problema ... gracias bud +1 –

+3

+100. ¿Por qué es esto una opción? ¡Tiene tantos efectos secundarios! –

-1

se tiene que mencionar en su manifestarse como

android:persistent="true" 

a continuación para que los mensajes responde a la misma pregunta

How to make an activity stop, rather then be destroyed, from the BACK key?

How to prevent call of onDestroy() after onPause()?

Prevent activity from being destroyed as long as possible

+0

Este atributo no existe para actividades: https://developer.android.com/guide/topics/manifest/activity-element.html – jekatt

+0

@jekatt existe https: // desarrollador .android.com/guide/topics/manifest/application-element.html –

Cuestiones relacionadas