Android utiliza MediaCodec para lograr una conmutación de vídeo perfecta
TextureView y SurfaceTexture forman una relación combinada. Es obvio que SurfaceTexture está realmente "envuelto" por TextureView. En el mundo de la programación, cuando se "cuida" un objeto significa:
(1) ¿Cuándo se creó el objeto?
(2) ¿Cómo se crean los objetos?
(3) ¿Qué cambios se han producido en el programa después de que se creó el objeto?
(4) ¿Cuándo será destruido el objeto?
El objeto SurfaceTexture es muy importante porque es el "conector" de todo el marco de visualización.
¿Alguna vez reprodujiste un vídeo y luego regresaste al fondo, solo para descubrir que la pantalla TextureView estaba completamente negra cuando regresaste? Al escuchar el ciclo de vida de TextureView, notará que cuando regrese al fondo, se llamará al método Destroy. Entonces te preguntarás: ¿no es necesario recrearlo después de la destrucción? La recreación causará más problemas y también será necesario reinicializarla al decodificar. Por tanto, debemos encontrar otra forma. El siguiente método es la parte central del cambio sin interrupciones.
En el método de destrucción, notamos que hay un parámetro de retorno. La explicación oficial es la siguiente
Ahora tiene sentido, devolvemos false al destruir, guardamos el objeto SurfaceTexture y luego llamamos a setSurfaceTexture() en el método onSurfaceTextureAvailable() cuando regresamos a la interfaz desde el fondo. . mSurfaceTexture) cuando regrese a la interfaz desde el fondo y luego llame al método setSurfaceTexture() en el método onSurfaceTextureAvailable(), que restaurará la pantalla anterior.
Utilice ItemTouchHelper para implementar fácilmente la clasificación mediante arrastrar y soltar y la eliminación deslizante de RecyclerView
Fuente: /chezi008/VideoSurveillance