お世話になります。
WebViewアプリを作っているのですが、状況に応じて画像は不要なことがあるため、ロードの高速化なども考慮して、
setBlockNetworkImage()で画像ロードを動的に抑制しています。
このAPI自体は意図通り動作しており、効果も出ているのですが、タイトルの通り、画像ロードをブロックしているときに限って
リンクの遷移が遅くなる(タップして5秒くらい黙り込んでしまう)ことがあるようです。
再現手順:
WebViewだけを置いたプロジェクトを作ります。以下が最小コードです。
---ここから
public class MainActivity extends AppCompatActivity {
private static final String TAG="MainActivity";
private WebView mWebView;
private WebSettings mWebSettings;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView)findViewById(R.id.webView);
mWebSettings = mWebView.getSettings();
mWebSettings.setJavaScriptEnabled(true);
mWebSettings.setBlockNetworkImage(true);
mWebView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
});
mWebView.loadUrl( "http://www.yahoo.co.jp");
}
}
---ここまで
実行するとYahooをロードするので、Yahooオークションのリンクをタップすると、ボタンとしては応答するのですが、
数秒黙り込んでから、ヤフオクのページに遷移します。setBlockNetworkImage(false)にすると、遷移はすぐに始まります。
API22のemulatorとAPI23の実機で数回試して、再現性を確認しました。
コンテンツを見ると、ただのaタグなのですが、今のところYahoo以外では発生を確認していません。
また、アプリ側からWebView.loadUrl()を実行したときには、問題は発生しないようです。
最初発生条件がまったくわからず、やっとここまで切り分けたのですが、リンクのタップと画像ロードが本当に関係があるのか
ないのか全くわかりません。
似た状況をご存じの方、解決方法をご存じの方いらっしゃいましたら、情報をいただけないでしょうか。
よろしくお願いいたします。