Android WebView - PullRequest
       4

Android WebView

2 голосов
/ 06 марта 2011

Со ссылкой на этот WebView учебник, в частности, этот метод

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);
}

Я заметил, что если я ставлю webView.loadUrl(centerURL); сразу после webView.loadUrl(MAP_URL); как это

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);
}

больше не работает. Таким образом, centreAt(..) метод javascript содержится в MAP_URL.

Мне интересно, возвращается ли метод webView.loadUrl(..) до того, как URL действительно был загружен. Это выглядит так, поскольку метод top ожидает полной загрузки, прежде чем запускать javascript

1 Ответ

13 голосов
/ 06 марта 2011

Да, webView.loadUrl() асинхронный: он немедленно возвращается, и WebView продолжает работать в своем собственном потоке.

Для отслеживания загрузки страниц WebView используйте WebViewClient.onPageFinished(..):

webview.setWebViewClient(new WebViewClient() {
    public void onPageFinished(WebView view, String url) {
        // do something here
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...