studio servicios oreo notificaciones compatibilidad android loaddata

servicios - Android WebView-1st LoadData() funciona bien, las llamadas subsiguientes no actualizan la visualizaciĆ³n



notificaciones android 8 android studio (7)

Aquellos que todavía tienen el problema, encontré una solución rápida, solo use un controlador para esto

Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { webView.loadDataWithBaseURL("", html, "text/html", "UTF-8", null); } }, 10) ;

Después de la primera llamada a LoadData (), el evento onLoadResource se activa como debería y la pantalla está bien. A continuación, quiero actualizar la pantalla con una nueva página, cuando use LoadData () la segunda vez que la página no se actualice y onLoadResource () NO FIRE.

Luego, la segunda llamada a LoadData () solo se ejecuta en la página Finalizada ... ¡La página de inicio nunca se dispara!

Una solución alternativa fue llamar a .reload () después de LoadData (), pero eso causa todo tipo de problemas durante la otra lógica en la actividad.

¿Por qué no funciona LoadData () varias veces?

Estoy usando HTML extremadamente simple, y desde que uso .reload () hace que funcione, mi declaración LoadData () no parece ser el problema.

Cualquier idea sería útil, TIA


Necesitas cargarDataWithBaseURL en el hilo principal


Por alguna razón tienes que borrar el contenido primero. Los métodos de "carga ..." no parecen estar agregando explícitamente su contenido, pero no funciona. Creo que solía ser WebView.clearView() pero estaba en desuso. El documento para el método en desuso en el site Android en realidad le dice que use WebView.loadUrl("about:blank") como reemplazo de ese método. Asi que...

WebView.loadUrl("about:blank"); WebView.loadData(data, mime, encoding);

... hace el truco para mí. Parece un poco sucio pero no me atrevería a desobedecer a Google! No estoy seguro de si alguien más está haciendo esto, pero simplemente estoy cargando una Cadena que había leído de un "activo". Lo estoy usando para mostrar documentos de ayuda. Así que no estoy usando ninguna URL real; Solo estoy usando el WebView como un renderizador HTML.

Nota: para los novatos que hay por ahí (como yo hace solo un mes), asegúrese de reemplazar "WebView" con una instancia de su variable. Estos no son métodos estáticos.


Pude actualizar el navegador en cada actualización al darle al documento html una identificación diferente cada vez: vea a continuación en // WEBVIEW.

package com.example.scroll; // philip r brenan at gmail.com, www.appaapps.com import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.util.Log; import android.webkit.WebView; public class MainActivity extends Activity {protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(new MyWebView(this)); } class MyWebView extends WebView {MyWebView(Context Context) {super(Context); getSettings().setJavaScriptEnabled(true); addJavascriptInterface(this, "Android"); new Thread() {public void run() {for(int j = 0; j < 100; ++j) {post(new Runnable() {public void run() {loadData(content(), "text/html", "utf-8"); // Display in browser } }); try {Thread.sleep(5000);} catch(Exception e) {} } } }.start(); } int c = 0, C = 1; String content() {final StringBuilder s = new StringBuilder(); //s.append("<html id="+(C++)+"><body>"); // WEBVIEW REFRESHES CORRECTLY *************** s.append("<html><body>"); // WEBVIEW DOES NOT REFRESH ****************** s.append("<h1 id=11>1111</h1>"); s.append("<script>location.href = ''#22'';</script>"); for(int i = 0; i < 10; ++i) s.append("<p>"+c+c+c); ++c; s.append("<h1 id=22>2222</h1>"); for(int i = 0; i < 10; ++i) s.append("<p>"+c+c+c); ++c; Log.e("AAAAAA", "content="+s.toString()); s.append("</body></html>"); return s.toString(); } } }


Tal enfoque funcionará

webView.loadDataWithBaseURL("fake-url", "<html></html>", "text/html", "UTF-8", null); webView.loadData(htmlBuilder.toString(), "text/html", "UTF-8");


Utilizar

webview.loadDataWithBaseURL("same://ur/l/tat/does/not/work", "data", "text/html", "utf-8", null);

funciona bien. loaddata no se actualiza la próxima vez que se cargan los datos.


String urlUnique = String.format("http://%s", java.util.UUID.randomUUID().toString()); webView.loadDataWithBaseURL(urlUnique, "<html></html>", "text/html", "UTF-8", null); Thread.sleep(200); webView.loadData(htmlData, "text/html", "UTF-8");