¿Por qué Camera necesita ser lanzado en onPause () en lugar de onstop () método de Activity?
Parece que me falta algo, ya que no entiendo por qué en la documentación de Android (Android Camera doc. Enlace) se recomienda para liberar el objeto de cámara (así como MediaRecorder) en onPause () Actividad de devolución de llamada? La actividad todavía podría ser visible en ese momento y la cámara podría estar ejecutando vista previa por lo que el objeto de la cámara sería lanzado en onPause () en lugar de onStop () cuando la actividad ya está oculto? Entiendo que el objeto MediaRecorder podría ser detenido en onPause () pero la cámara en sí no tiene sentido para mí. ¿Que me estoy perdiendo aqui? Pieza de código de la documentación de Android se encuentra debajo (su bajo Soltar el encabezado Cámara):
@Override protected void onPause() { super.onPause(); releaseMediaRecorder(); // if you are using MediaRecorder, release it first releaseCamera(); // release the camera immediately on pause event } private void releaseMediaRecorder(){ if (mMediaRecorder != null) { mMediaRecorder.reset(); // clear recorder configuration mMediaRecorder.release(); // release the recorder object mMediaRecorder = null; mCamera.lock(); // lock camera for later use } }
- La resolución de CamcorderProfile.QUALITY_HIGH produce vídeo verde parpadeante
- Android Mediarecorder duración del video grabado diferente de la duración esperada
- Necesita un ejemplo sencillo para la grabación de audio
- Android: Dos instancias de Media Recorder al mismo tiempo
- MediaRecorder - setOrientationHint () excepción / error
- Cómo imprimir los mensajes de registro con el marco de Android
- Problemas con la clase MediaRecorder para grabar audio - prepare () da una excepción - Permiso denegado
- ¿Cómo activar la vibración en la entrada de sonido?
- Error de inicio del error mediarecording de Android -19 runTimeException
- Error al iniciar MediaRecorder: -38
- Grabe vídeo con un tamaño de vista previa diferente al del archivo de vídeo resultante
- MediaRecorder falló cuando detengo la grabación
- Android no puede grabar vídeo con la Cámara frontal, Error de inicio de MediaRecorder: -19
Según el ciclo de vida de la aplicación
Paused Another activity is in the foreground and has focus, but this one is still visible. That is, another activity is visible on top of this one and that activity is partially transparent or doesn't cover the entire screen. (...)
Creo que la documentación sigue la regla del pulgar "liberar recursos tan pronto como sea posible": onPause
es anterior a onStop
.
Cámara en la ventana de fondo necesita energía, mientras que el usuario tiene que prestar atenciones a la ventana emergente.
Cámara en el backgroud es, por supuesto, más cómodo, pero para una duración de la batería móvil es más importante.
La ventana emergente que interceptó actividad puede necesitar la cámara y / o puede necesitar mucha memoria.
En su escenario, cuando la cámara debe continuar grabando en segundo plano, el ciclo de vida y grabación de la cámara debe ser controlado por un servicio
Una vez que su actividad recibe el mensaje de onPause significa que el usuario podría estar usando o va a utilizar alguna otra aplicación .. en este caso si intenta utilizar la cámara a través de otra aplicación de la cámara debe ser liberado o liberado por su aplicación.
Como
onStop
() no está garantizado para ser llamado, no siempre se puede hacer en onStop () lo que se hace enonPause().
Para la respuesta detallada
onPause()
siempre se llama. Esto está garantizado. Si necesita guardar cualquier estado en su actividad, debe guardarlo en onPause(). onStop()
onPause(). onStop()
se puede llamar después de onPause (), o puede que no. Depende de la situación.
OnPause significaría que su actividad ya no es visible.
OnStop sólo se llamaría si Android no creía que su proceso era necesario.
- Android DataPickerDialog onDateChanged no está disparando
- ActionBarSherlock para Android causando StackOverflowError