Android WebView

En référence à ce didacticiel WebView , en particulier cette méthode

private void setupWebView(){ String MAP_URL = "http://gmaps-samples.googlecode.com/svn/trunk/articles-android-webmap/simple-android-map.html"; String centerURL = "javascript:centerAt(" + mostRecentLocation.getLatitude() + ","+ mostRecentLocation.getLongitude()+ ")"; webView = (WebView) findViewById(R.id.webview); webView.getSettings().setJavaScriptEnabled(true); //Wait for the page to load then send the location information webView.setWebViewClient(new WebViewClient(){ @Override public void onPageFinished(WebView view, String url){ webView.loadUrl(centerURL); } }); webView.loadUrl(MAP_URL); } 

J'ai remarqué que si je place le webView.loadUrl(centerURL); Directement après webView.loadUrl(MAP_URL); comme ça

 private void setupWebView(){ String MAP_URL = "http://gmaps-samples.googlecode.com/svn/trunk/articles-android-webmap/simple-android-map.html"; String centerURL = "javascript:centerAt(" + mostRecentLocation.getLatitude() + "," + mostRecentLocation.getLongitude()+ ")"; webView = (WebView) findViewById(R.id.webview); webView.getSettings().setJavaScriptEnabled(true); //Wait for the page to load then send the location information webView.setWebViewClient(new WebViewClient(){ @Override public void onPageFinished(WebView view, String url){ //DO NOTHING } }); webView.loadUrl(MAP_URL); webView.loadUrl(centerURL); } 

Ça ne fonctionne plus. Donc, la méthode javascript centreAt(..) est contenue dans MAP_URL .

Je me demandais si la webView.loadUrl(..) revient avant que l'URL ne soit effectivement chargée. Il ressemble de cette façon car la méthode supérieure attend qu'il soit complètement chargé avant d'exécuter le javascript

Oui, webView.loadUrl() est asynchrone: il retourne immédiatement et WebView continue de fonctionner dans son propre thread.

Pour surveiller le chargement de la page WebView, utilisez WebViewClient.onPageFinished(..) :

 webview.setWebViewClient(new WebViewClient() { public void onPageFinished(WebView view, String url) { // do something here } });