Cómo guardar una imagen de fondo en onSaveInstanceState () y restaurarla en onRestoreInstanceState () en Android Studio

Le solicito que ponga un código de muestra y capturas de pantalla de producción de su aplicación que está desarrollando, porque deseo saber cuáles son sus estados. Editará la respuesta en consecuencia.

Sin embargo, estoy escribiendo una respuesta genérica, basada en la suposición de que su cambio en los Estados es la orientación de la pantalla, es decir, si su cámara toma una fotografía en horizontal, la misma imagen debería aparecer al girar el retrato. Espero que ayude.


(Al abrir SimpleCameraIntentFragment.java, encontrará los siguientes métodos (tomados de la documentación de Simple Camera de Google))

onSaveInstanceState() , llamado para recuperar el estado por instancia de una actividad antes de matarlo, de modo que el estado pueda restaurarse en onCreate(Bundle) o onRestoreInstanceState(Bundle) (el Bundle poblado por este método se pasará a ambos).

Este método se llama antes de que una actividad pueda ser eliminada para que cuando regrese en algún momento en el futuro pueda restaurar su estado.

Básicamente, después de capturar la imagen, la estoy almacenando en una ruta y extrayendo esa ruta en una variable disparando el onSaveInstanceState y luego restaurando de acuerdo a mi tiempo libre y caprichos y fantasías en onRestoreInstanceState

// Almacenamiento para componentes de URI de imagen de cámara privada Cadena estática final

CAPTURED_PHOTO_PATH_KEY = “mCurrentPhotoPath”;

Cadena estática final privada CAPTURED_PHOTO_URI_KEY = “mCapturedImageURI”;

// Requerido para las operaciones de la cámara para guardar el archivo de imagen en el currículum.

Private String mCurrentPhotoPath = nulo;
Uri privado mCapturedImageURI = nulo;

@Anular
public void onSaveInstanceState (Bundle savedInstanceState) {

if (mCurrentPhotoPath! = null) {

savedInstanceState.putString (CAPTURED_PHOTO_PATH_KEY, mCurrentPhotoPath);
}
if (mCapturedImageURI! = null) {

savedInstanceState.putString (CAPTURED_PHOTO_URI_KEY, mCapturedImageURI.toString ());
}

super.onSaveInstanceState (savedInstanceState);
}

@Anular

nulo protegido en RestoreInstanceState (Bundle savedInstanceState) {

if (savedInstanceState.containsKey (CAPTURED_PHOTO_PATH_KEY)) {

mCurrentPhotoPath = savedInstanceState.getString (CAPTURED_PHOTO_PATH_KEY);
}
if (savedInstanceState.containsKey (CAPTURED_PHOTO_URI_KEY)) {

mCapturedImageURI = Uri.parse (savedInstanceState.getString (CAPTURED_PHOTO_URI_KEY)); }

super.onRestoreInstanceState (savedInstanceState);

}

mCurrentPhotoPath es el URI donde está almacenando la imagen capturada en su tarjeta SD y en onSaveInstanceState() , debe pasar solo ese URI, eso es todo. Y más tarde, restaura la misma ruta y, en la interfaz, el usuario aún puede ver la imagen, a pesar de los cambios en las Actividades.


Puede ver más de esto en esto en Ultimate Android Camera Guide y el archivo Camera.java en ese Git aquí rexstjohn / UltimateAndroidCameraGuide