2013-08-07 14 views
5

WebView ilk sayfa yüklendiğinde, bazen görüntüler eksik veya yanlış görüntüleniyor. Sayfayı yeniden yüklerseniz, WebView her zaman mükemmel şekilde görüntülenir. Herkesin ilk önce loadUrl'den sonra javascript ayarladığımı biliyorum, ama bu doğru değil. onCreate yılındaWebView doğru şekilde yüklemek için iki kez yüklenmelidir

Ben:

learnWebView = (WebView)findViewById(R.id.learnWebView); 
learnWebView.setWebViewClient(new WebViewClient()); 
learnWebView.getSettings().setJavaScriptEnabled(true); 

Sonra sonra ben var onCreate sonra denilen işlevinde:

learnWebView.loadUrl("myurl"); 

Ve evet, loadURL ile fonksiyon onCreate her zaman sonra adlandırılır biliyoruz . durumda, ilki alışkanlık iş

 learnWebView.post(new Runnable() { 

      @Override 
      public void run() { 
       learnWebView.loadUrl("myurl"); 
      } 
     }); 

Ya da bu: bu yardımcı olur

 learnWebView.postDelayed(new Runnable() { 

      @Override 
      public void run() { 
       learnWebView.loadUrl("myurl"); 
      } 
     }, 500); 

Umut

+1

Bu bir URL'ye veya bir Android sürümüne veya belirli bir bireye özgü midir? WebView, önbelleğe alınmış içeriği yüklemeye ve başarısızlığa ya da başka bir şey yapmaya çalışıyor olabilir. Bu bazen masaüstü WebKit tarayıcılarında gerçekleşir. İlk yüklemede yeni bir önbellek kullanmayı denediniz mi? –

+0

Aslında Android 4.0'a özgü görünüyor. 2.3 veya 4.1'de olmaz. Yeni bir önbellek kullanarak, learnWebView.clearCache (true) mu demek istiyorsunuz? –

+1

ClearCache() çağrısı gerçekten daha da kötüleştirdi. Bu yüzden bir yeniden yükleme sorunu düzeltmek olmaz. –

cevap

9

yerine yol bu deneyin, bu kötü bir uygulamadır.

+0

Teşekkürler adamım, bunu yarın deneyeceğim. –

+0

Önerinizle karşılaştırdığımızda uygulayabildiğim Hack'in tuzakları nelerdir? Pratik bir bakış açısıyla, bu şekilde yanlış gidemediğim yoldan ne yanlış gidebilirim? Bu çalışmayı yarın doğru bir şekilde doğruladığım zaman kabul edeceğim. –

+0

Bildiğiniz gibi, ana iş parçacığının 1s için tam anlamıyla uykuda kalmasına ve yeniden (iki kez) yeniden yüklemesine izin verdiğinizde, bu şekilde web görünümünün hemen işin yapılmasına izin vermesi ('post()' yöntemi) veya en kötü durumda birkaç milisaniye ('postDelayed()' yöntemi için gecikme (yalnızca bir kez). Bir açıklamaya ihtiyacın varsa. Şerefe! – user2652394

1

onViewAttachedToWindow'a bakın. Mantığınızı javascript'te yalnızca onViewAttachedToWindow'un çalışmasından sonra işlemelisiniz.

0

Aynı sorunla karşılaştım. seninkiyle aynı durumda olup olmadığından emin değilim. 3 günden fazla harcadım ve aslında başka bir WebView nesnesinin pauseTimers() işlevini, aslında "Tüm WebView'lar için tüm düzen, ayrıştırma ve JavaScript zamanlayıcılarını duraklatır" olan bazı CPU performanslarını kaydetmek için çağırdığını fark ettim.