WebView.setBlockNetworkImageで画像ロードを抑制すると、リンク遷移が遅くなることがある。

瀏覽次數:186 次
跳到第一則未讀訊息

Yasuhiro Inagawa

未讀,
2016年8月18日 下午1:39:262016/8/18
收件者:Android-SDK-Japan
お世話になります。

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()を実行したときには、問題は発生しないようです。

最初発生条件がまったくわからず、やっとここまで切り分けたのですが、リンクのタップと画像ロードが本当に関係があるのか
ないのか全くわかりません。
似た状況をご存じの方、解決方法をご存じの方いらっしゃいましたら、情報をいただけないでしょうか。

よろしくお願いいたします。

回覆所有人
回覆作者
轉寄
0 則新訊息