2

WebView を使用して URL をロードしようとしていますが、Web ビューが安定していないように見えます。ページが 100% ロードされることもあれば、30%/50%/75% (ランダム) でロードが停止することもあります。Android Bolts タスク内で WebView を作成していますが、WebView はユーザーに表示されず、将来のリクエストのために JavaScript をロードするだけです。

コード:

private Task<Boolean> task_SetupJavascript(){

    final Task<Boolean>.TaskCompletionSource myTask = Task.create();

    WebView webview = new WebView(getActivity());
    final WebSettings settings = webview.getSettings();
    settings.setJavaScriptEnabled(true);
    settings.setDomStorageEnabled(true);

    webview.setWebViewClient(new WebViewClient() {

        @Override
        public void onPageFinished(WebView view, String url) {
            view.loadUrl("javascript: LocalStorage.set('valueA', 'valueB', 'valueC');");
            myTask.setResult(Boolean.TRUE);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }

        @Override
        public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
            // never fired during tests
            Log.e(TAG,"onReceivedError --->  Something went wrong... "); 
            myTask.setCancelled();
        }
    });

    webview.setWebChromeClient(new WebChromeClient() {
        @Override
        public void onProgressChanged(WebView view, int newProgress) {
            super.onProgressChanged(view, newProgress);
            Log.e(TAG, ""+newProgress);
        }
    });

    webview.loadUrl(URL);
    webview.onResume();
    return myTask.getTask();

}

進行中に WebView の読み込みがランダムに停止する原因がわかりません。このタスクを初めて実行するときに失敗することもあれば、3/4/5 時間後に失敗することもあります。

4

0 に答える 0