Log <gate-m> DEV_ACTION_COMPLETED </gate-m>似乎延迟了在Android上的执行

时间:2013-08-01 13:41:33

标签: android android-webview android-browser webviewclient android-websettings

我最近注意到我的应用偶尔有LAG。而LAG我的意思是它可能需要40秒,取决于我是否使用Wifi或移动数据......

我加载页面网址,然后加载js执行:

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

调用加载网址后,页面显示在网页视图中,用户界面就会响应,我可以点击按钮,返回并导航应用程序......

BUT

我正在尝试运行的脚本未执行,直到将 DEV_ACTION_COMPLETED 打印到日志中,然后一切恢复正常,并且调用onPageFinished并立即运行脚本。问题是这可能需要40秒。

==更新==

似乎延迟正在增长到某一点,之后延迟缩短为零,再次增长......它就像一个序列:0,1,2,4,8,16,32 ......然后从0开始。

可能是因为我在很短的时间内用webview创建了新的活动吗?

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

我们已经设法为这个糟糕的问题制定了解决方案......无论我尝试过什么,我找不到这个问题的Java解决方案,但我们确实找到了一个HTML + JavaScript解决方案:

我们不是等待java的onPageFinish,而是注入一个java脚本来监听window.onLoad事件......

在那里我们注入了我们真正的JavaScript ......就像魅​​力......

For more details.