Restauración del estado de vista web que contiene HTML generado dinámicamente

Tengo un WebView en mi aplicación que carga contenido dinámico, y quiero que la vista persista en rotaciones de dispositivos. Así que escribí las siguientes líneas de código:

 @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mWebView.saveState(outState); } 

Y en mi onCreate ():

 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (savedInstanceState != null) { if(D.bug){ Log.i(TAG, "Restoring browser state"); } mWebView.restoreState(savedInstanceState); } else { if(D.bug){ Log.i(TAG, "Not restoring browser state"); } mWebView.loadUrl("file:///android_asset/html/browser_3col.html"); } return mWebView; } 

Pero esto efectivamente recarga la página. Quiero pasar el HTML generado dinámicamente.

Estaba pensando en descargar todo el documento HTML a través de un JavascriptInterface , almacenarlo en el outState, y luego restablecerlo de nuevo a través de JavascriptInterface .

¿Sería esto un buen enfoque? ¿No hay ningún método de WebView que me permita obtener su HTML interno?

One Solution collect form web for “Restauración del estado de vista web que contiene HTML generado dinámicamente”

Mi solución actual tiene el código siguiente:

en mi código JavaScript:

 window.JSInterface.dumpInnerHtml(document.documentElement.innerHTML); 

en mi JavascriptInterface :

 @JavascriptInterface public void dumpInnerHtml(String htmlDump) { if (!mBrowseFragment.isDetached()) { mBrowseFragment.updateWebviewHtml(htmlDump); } } 

en onSaveInstance() :

  super.onSaveInstanceState(outState); mWebView.saveState(outState); outState.putString(INSTANCE_CONTAINER_HTML, mCurrentHtmlDump); 

en onCreate() :

 if (savedInstanceState != null) { mWebView.restoreState(savedInstanceState); String restoredHtml = savedInstanceState .getString(INSTANCE_HTML); if (restoredHtml != null) { mWebView.loadData(restoredHtml, "text/html", "utf-8"); } } 

Casi funciona. Pero tengo algunos problemas con él. Parece que loadData () no interpreta las etiquetas de script. (Mis funciones de js se rompen.), Y siento que esto podría resolverse con más elegancia.

  • Cómo obtener escala de vista web en Android 4
  • Giro a la izquierda / derecha de Android en la actividad de WebView (haciendo clic en vínculos y desplazamiento vertical)
  • Impedir el cierre automático del portal en cautiverio después de la autenticación (Android)
  • Rendimiento JPG vs WebP en Android
  • En la vista Web de Android, ¿puedo modificar el DOM de una página web?
  • Servidor de back-end para aplicaciones móviles
  • Tiempo de espera para solicitud de servidor hecha usando "Volley" solo en Android no iOS
  • ¿Cómo mostrar html / páginas web externas dentro de la aplicación android?
  • Que puede reemplazar la función capturePicture
  • ¿Cuál es la mejor manera de raspar este código HTML para una aplicación para Android?
  • Tratando de conectar la aplicación de Android a .NET ".svc" webservice y el servidor responde Tipo de soporte no compatible
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.