2010-11-18 16 views
6

Como digo en el tema, quiero que mi WebView evite volver a cargar la página web cuando otra actividad pase a primer plano o cuando cambie la orientación. La razón es porque el contenido de WebView es generado por Javascript/AJAX casi por completo. Después de buscar en un par de foros, descubrí muchas personas sugirieron utilizar y métodos "savestate" "restoreState", pero cuando miro la documentación, que dice:Método restoreImage de WebView - Cómo evitar que webview vuelva a cargar la página

Tenga en cuenta que este método no restaura la mostrar datos para este WebView. Consulte savePicture (Bundle, File) y restorePicture (Bundle, File) para guardar y restaurar los datos de visualización.

Por lo tanto, aquí estaba usando ese savePicture y restorePicture como sigue:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

... algunas otras líneas ....

 setContentView(R.layout.main); 
     mWebView = (WebView) findViewById(R.id.webview); 

     if (savedInstanceState == null){ 
      loadInicialWebUi(); 
     }else{ 
      mWebView.restoreState(savedInstanceState); 
      boolean restoredPic = mWebView.restorePicture(savedInstanceState, new File("savedDisplayWebView.temp")); 
      Log.d(TAG, "restored Picture:" + restoredPic); 
     } 
    } 

@Override 
protected void onSaveInstanceState(Bundle savedInstanceState) { 
    mWebView.saveState(savedInstanceState); 
    boolean savedPic = mWebView.savePicture(savedInstanceState, "savedDisplayWebView.temp"); 
     Log.d(TAG, "saved Picture:" + savedPic); 
    super.onSaveInstanceState(savedInstanceState); 
} 

Y así, esos registros eran revelando que guarda la imagen, pero no pudo restaurarla. Sospecho que podría haber algo sobre las referencias al archivo, pero no se me ocurrió una forma mejor de obtener la referencia del archivo que creé al guardar el estado.

¿Alguien emocionado? Agradecería cualquier pista/sugerencia. Gracias de antemano.

Manuel.

Respuesta

0

Me cargar la página en onCreate() y poner este atributo en su actividad en el manifiesto:

android:configChanges="orientation|keyboardHidden" 

Esto evitará que su actividad pueda reiniciarse cuando cambia de orientación. Y como tu Actividad carga la página en onCreate(), traer otra Actividad al primer plano no hará que recargues la página.

+0

Gracias por su respuesta, funcionaría para los cambios de orientación de pantalla, como leo en otros artículos, pero cuando envío un intento para abrir una actividad (específicamente el reconocimiento de voz), usando la misma tarea y con el historial habilitado, como tan pronto como vuelve, pierde el contenido generado dinámicamente, es por eso que estaba interesado en ese método específico (savePicture). – mdelolmo

+0

Lo siento, tuve algunos errores en mi código por lo que WebView estaba perdiendo el contenido generado. Ahora está bien, pero todavía tengo curiosidad sobre esto savePicture y restorePicture methods. – mdelolmo

Cuestiones relacionadas