6

Niedawno zauważyłem, że moja aplikacja zawiera sporadyczne LAG. i przez LGD rozumiem może potrwać do 40 sekund, zależy, czy używam WiFi lub mobilnej transmisji danych ...Log DEV_ACTION_COMPLETED</GATE-M> wydaje się opóźniać wykonanie na Androidzie

załadować URL strony, a następnie załadować js do wykonania:

webView = (WebView) view.findViewById(R.id.WebView); 

    webView.setWebViewClient(new WebViewClient() { 

     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      logDebug("Loading URL: " + url); 
      super.onPageStarted(view, url, favicon); 
     } 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      return WrappingClass.this.shouldOverrideUrlLoading(view, url); 
     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      super.onPageFinished(view, url); 
     logInfo("loading JavaScript to webview."); 
     webView.loadUrl("full-js-here"); 

     } 

     @Override 
     public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
      logError("error code:" + errorCode); 
      super.onReceivedError(view, errorCode, description, failingUrl); 
     } 
    }); 

    WebSettings webSettings = webView.getSettings(); 
    webSettings.setSavePassword(false); 
    webSettings.setSaveFormData(false); 
    webSettings.setJavaScriptEnabled(true); 
    webView.requestFocus(View.FOCUS_DOWN); 
    webView.loadUrl("url"); 

Po wywołaniu url obciążenie, strona jest wyświetlana w widoku strony internetowej, interfejs użytkownika jest czuły, mogę kliknąć na przyciski, wróć i przejdź do aplikacji ...

ALE

skrypt Próbuję Uruchomienie nie zostanie wykonane, dopóki nie zostanie wykonane DEV_ACTION_COMPLETED zostanie wydrukowany do dziennika, a następnie wszystko wróci do normy, a funkcja onPageFinished zostanie wywołana i natychmiast uruchomi skrypt. problem może zająć do 40 sekund.

== == AKTUALIZACJA

Wydaje się, że opóźnienie rośnie do pewnego punktu, a potem, że opóźnienie jest skrócić do zera i ponownie rośnie ... jak jego sekwencji: 0,1, 2,4,8,16,32 ... a następnie zaczyna się od 0.

Czy to możliwe, ponieważ w niedługim czasie tworzę nowe czynności za pomocą przeglądarki internetowej?

Jakieś myśli?

+0

Spróbuj dodać 'webView.setW ebChromeClient (nowy WebChromeClient()); webView.setWebViewClient (nowy WebViewClient()); 'before' webSettings.setJavaScriptEnabled (true); '. Zobacz też: http://stackoverflow.com/questions/5820237/android-webview-loadurl-with-javascript-onpagefined-lag – Slartibartfast

+0

Za kilka godzin ... – TacB0sS

+0

Nie działa. . :( – TacB0sS

Odpowiedz

5

Udało naszkicować się rozwiązanie tego problemu brzydko ... bez względu na to, co próbowałem nie mogłem znaleźć rozwiązanie tego problemu Java, ale nie znaleźć HTML + JavaScript rozwiązanie:

Zamiast czekać na onPageFinish w Javie, możemy wstrzyknąć skrypt java słuchać przypadku window.onload ...

i tam wprowadzić naszą rzeczywistą JavaScript ... działa jak czar ...

For more details.

+2

Twoje rozwiązanie działa dobrze i znalazłem rozwiązanie, ale byłbym szczęśliwszym obozowiczem, gdybym mógł znaleźć przyczynę problemu, ponieważ dzieje się to pod wybranym adresem URL. Na przykład z adresem URL jako google .com, onPageFinished zawsze uruchamia się natychmiast. Przy innym adresie URL, takim jak URL uwierzytelniający linkIn, funkcja onPageFinished nie uruchamia się po pierwszym załadowaniu po wyczyszczeniu pamięci podręcznej aplikacji za pośrednictwem ustawień. Obserwując z powodu nadpisywania metod związanych z klientem webviewclient i web chromeclient, nie ma przekierowań ani Błędy występujące na tej stronie: – mainframe

+0

Myślę, że ma to związek z ładowaniem treści ... gdybyś zbudował prostą aplikację do przeglądania stron internetowych i wydrukował wszystkie wywołania zwrotne, zauważyłbyś, że również powinno się ... Zmienić ... url() m etykieta nie jest wywoływana przy każdym ładowaniu, zależy to od tego, czy żądanie zostanie wysłane, czy post, zależy to od tego, czy są to wywołania AJAX, odkryłem, że jest wiele przyczyn tego, a także, że ChromeClient zgłasza to samo co WebViewClient. – TacB0sS

Powiązane problemy