由于SSE调用,Android webview随机崩溃

时间:2014-02-16 10:21:50

标签: android jquery-mobile android-webview server-sent-events

我有一个Jquery Mobile 1.4和Jquery 2.0网页,我在Android Webview(Android 4+)中提供。一切正常,直到我开始使用SSE。由于WebViewCoreThread上的信号11,应用程序会定期崩溃。

当从页面导航到页面然后随机导航时,会发生

没有堆栈跟踪,只有0x00000000处的信号11。

这是javascript代码:

if ( typeof (EventSource) !== "undefined") {
    // sse
    //console.log("sse");
    chatnotificationsource = new EventSource("php/process_get_chat_notification.php");
    chatnotificationsource.onmessage = function(event) {

        var message = event.data;
        console.log("got message " + message);
        $("#chatnotification").show();

    };
}

当我关闭SSE代码时没有问题,所以它显然与SSE调用有关。我正在使用以下WebView初始化。

    @SuppressLint("SetJavaScriptEnabled")
protected void createWebView(int webViewId) {

    webView = (WebView) findViewById(webViewId);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setPluginState(WebSettings.PluginState.ON);
    webView.getSettings().setUseWideViewPort(true);
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setRenderPriority(RenderPriority.HIGH);

    webView.getSettings().setUseWideViewPort(true);
    webView.getSettings().setBuiltInZoomControls(true);
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setAppCacheMaxSize(20 * 1024 * 1024); // 20MB
    webView.getSettings().setAppCachePath(
            getApplicationContext().getCacheDir().getAbsolutePath());
    webView.getSettings().setAllowFileAccess(true);
    webView.getSettings().setAppCacheEnabled(true);
    // load online by default
    webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);

    webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

    if (!connectionDetector.isConnectingToInternet()) {
        // loading offline
        webView.getSettings().setCacheMode(
                WebSettings.LOAD_CACHE_ELSE_NETWORK);
    }

    // clients
    webView.setWebViewClient(customWebViewClient);
    webView.setWebChromeClient(customWebChromeClient);

}

我希望在SSE呼叫正在运行或“处理”时Android与导航到另一个页面有关。

感谢您的帮助, Coenos

1 个答案:

答案 0 :(得分:0)

结合Android WebView远离SSE解决了这个问题。此(尚未)没有WebView补丁/更新或解决方法。