Android WebView + loadUrl avec javascript + onPageFinished = lag

J'ai WebView qui charge une page, quand il est terminé, j'applique une magie de javascript pour gâcher des DOM. Tout va bien, les charges de page et onPageFinished J'appelle wv.loadUrl(javascript);

Mais je ne veux pas voir le processus de chargement, et comment fonctionne javascript, j'ai juste besoin de résultat, alors j'ai rendu mon vision invisible avec wv.setVisibility(View.INVISIBLE); Dès le début, et le rendre visible à nouveau lorsque tout est terminé. C'est là que se produit le problème.

  • Copier la base de données du dossier des ressources vers les bases de données
  • Android Webview shouldOverrideUrlLoading méthode
  • Hex transparence en couleurs
  • L'application Android n'est pas compatible avec Samsung Galaxy S4
  • Ajouter EditText aux côtés de RadioButton
  • Comment limiter l'encrychage lors de l'utilisation de GLSurfaceView d'Android.RENDERMODE_CONTINUEMENT?
  • Ce code devrait rendre la vue visible après la fin de javascript, mais wv.setVisibility(View.VISIBLE) déclenche avant javascript. Donc, pour un instant, je vois la page et comment elle est modifiée par javascript. C'est juste moche.

      public void onPageFinished (WebView view, String url) { wv.loadUrl(javascript); view.getSettings().setLoadsImagesAutomatically(true); wv.setVisibility(View.VISIBLE); } 

    J'ai obtenu que loadUrl fonctionne de manière asynchrone, alors j'ai essayé de faire un autre WebViewClient avec la méthode "make first view visible" à l'intérieur de onPageFinished , et l'utiliser pour appeler JS. Mais il ne cesse de s'écraser avec une erreur NPE.

     wv2.setWebViewClient(new WebViewClient() { @Override public void onPageFinished (WebView view, String url) { wv.setVisibility(View.VISIBLE); } }); 

    Pour l'instant, j'ai simplement ajouté un délai après javascript ( SystemClock.sleep(5000) ), mais ça ressemble à … oui.

  • Comment obtenir le prénom et le nom de famille du propriétaire du téléphone Android?
  • Générateur de gradient pour Android
  • Détection d'itinérance dans Android
  • Java.lang.IllegalStateException: ScrollView ne peut héberger qu'un enfant direct
  • Créer une classe générale pour une boîte de dialogue personnalisée dans java Android
  • Voulez-vous compiler un binario Android natif? Je peux exécuter dans le terminal sur le téléphone
  • 2 Solutions collect form web for “Android WebView + loadUrl avec javascript + onPageFinished = lag”

    D'accord, je pense que je l'ai compris. Nous pouvons avoir un rappel de la fin de javascript qui déclenchera "show view" – comme ici ou ici (avec le gestionnaire, parce que je voulais mettre à jour ui). Mais cela ne changera rien, le problème semble être la vitesse de rendu. C'est juste lent. Donc, pour l'instant, je resterai avec un délai de 1 seconde après avoir déclenché JS.

    Je ne pense pas que vous allez avoir une solution facile à cela. Tout ce que Android peut détecter (comme la plupart des navigateurs) est lorsque la page est entièrement chargée, ce qui signifie que tout est téléchargé. Javascript attend qu'il soit également téléchargé, et ensuite, commence à fonctionner. C'est comme ça que ça marche. La seule solution que je peux penser pourrait être juste dans JQuery. Je n'en connais pas beaucoup, mais il y a généralement des solutions à des choses comme ça.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.