¿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 } } 

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 en onPause().

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.

  • Cómo cambiar entre la cámara delantera y trasera cuando se utiliza MediaRecorder android
  • Grabar un video de resolución cuadrada en android
  • Uso de android MediaRecorder
  • Mediarecorder Android sólo grabar video de calidad terrible
  • Android MediaRecorder para grabar una superficie (no la cámara)
  • Frecuencia de muestreo y ruido de Android MediaRecorder
  • Android - Cómo iniciar la grabación de vídeo automáticamente cuando se llama a la cámara intención
  • Cómo cambiar framerate cuando se utiliza clase MediaRecorder
  • Registro de video Android sin audio
  • Cómo reducir el tamaño del archivo mp3 en Android creado con MediaRecorder
  • La grabación de vídeo con MediaRecorder y FileOutputStream produce un archivo de vídeo que no se puede reproducir
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.