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

4 Solutions collect form web for “¿Por qué Camera necesita ser lanzado en onPause () en lugar de onstop () método de Activity?”

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.

  • La resolución de CamcorderProfile.QUALITY_HIGH produce vídeo verde parpadeante
  • Android Video Recording de la superficie de OpenGL (GLSURFACEVIEW)
  • La clase MediaRecorder comienza a grabar audio después de un ligero retraso
  • Mediarecorder de Android Volcado de salida reflejada
  • La grabación de vídeo con MediaRecorder y FileOutputStream produce un archivo de vídeo que no se puede reproducir
  • Android MediaRecorder para grabar una superficie (no la cámara)
  • Android getSupportedVideoSizes siempre devuelve null
  • Cómo cambiar la velocidad de fotogramas de la cámara para crear vídeo de cámara lenta o lapso de tiempo en Android
  • ¿Cómo recuperar datos al grabarlos y visualizarlos como gráficos (Visualizador) en la pantalla?
  • Mediarecorder Android sólo grabar video de calidad terrible
  • MediaRecorder Audio Delay
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.