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

  • Android API8 setDisplayOrientation no afecta en absoluto
  • Error al iniciar MediaRecorder: -38
  • Interrumpir la grabación de medios mediante programación. Camera.apk de samsung galaxy tiene `this.mMediaRecorder.pause ();` no funciona en mi código
  • Android - Cómo iniciar la grabación de vídeo automáticamente cuando se llama a la cámara intención
  • Silencio de MediaRecorder al inicio de la grabación (¿Retardo?)
  • Cámara - cambios de vista previa después de iniciar la grabación de vídeo
  • Error de inicio del error mediarecording de Android -19 runTimeException
  • La resolución de CamcorderProfile.QUALITY_HIGH produce vídeo verde parpadeante
  • Transmitir un archivo MediaRecorder durante la grabación
  • Android MediaRecorder stop () no se llama
  • Cómo saber cuando MediaRecorder ha terminado de escribir datos en el archivo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.