最近、自分のアプリで時折 LAG が発生することに気付きました。LAGとは、Wifiまたはモバイルデータを使用するかどうかによって、最大40秒かかる可能性があることを意味します...
ページの URL を読み込み、実行のために 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");
読み込み URL を呼び出した後、ページが Web ビューに表示され、UI が応答し、ボタンをクリックして戻ってアプリケーションをナビゲートできます...
しかし
実行しようとしているスクリプトは、 DEV_ACTION_COMPLETEDがログに出力されるまで実行されません。その後、すべてが正常に戻り、onPageFinished が呼び出されてスクリプトが即座に実行されます。問題は、これに最大 40 秒かかることです。
==更新==
遅延はある時点まで増加しているようで、その後、遅延は短縮されてゼロになり、再び増加します...シーケンスのように: 0,1,2,4,8,16,32... そして開始します0から。
あまりにも短い時間で、webview を使用して新しいアクティビティを作成しているためでしょうか?
何かご意見は?