WebViewの描画遅延の解消方法

847 views
Skip to first unread message

関本智史

unread,
Mar 21, 2014, 10:49:07 AM3/21/14
to android-g...@googlegroups.com

いつもお世話になっております。

開発しているアプリに、起動画面の次にいくつかのボタンと横長のバナー用のWebViewを持つ画面(Aとします)があります。
このAを表示する際、バナー部分の表示に1秒程度かかってしまいます。

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);


setContentView(R.layout.activity_main);

WebView topBanner = (WebView)findViewById(R.id.TopBanner);


topBanner.setBackgroundColor(Color.TRANSPARENT);

bottomBanner.setBackgroundColor(Color.TRANSPARENT);

topBanner.loadUrl("バナーのURL");

bottomBanner.loadUrl("バナーのURL");

topBanner.getSettings().setJavaScriptEnabled(true);

bottomBanner.getSettings().setJavaScriptEnabled(true);

}



以上のようにして表示しています。

この遅延を解消し、他のボタンなどと同じタイミングで画面に表示させるには、どういった方法がありますでしょうか。

先読みなど方法がありましたら、ご教授願えませんでしょうか。



Hirokazu Fukami

unread,
Mar 21, 2014, 10:53:14 AM3/21/14
to android-g...@googlegroups.com
こんにちはfkmです。

どこが遅延しているか、Logcatを仕込むなどして測定してみましたか?
(通信が遅い/取得したデータ量の差がある など)
> --
> このメールは Google グループのグループ「日本Androidの会」に登録しているユーザーに送られています。
> このグループから退会し、グループからのメールの配信を停止するには
> android-group-j...@googlegroups.com にメールを送信してください。
> このグループに投稿するには android-g...@googlegroups.com にメールを送信してください。
> http://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
> その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。



--
-------------------------------------------------------------
深見 浩和(Hirokazu Fukami)

URI:http://www.fkmsoft.jp
email: f...@fkmsoft.jp

関本智史

unread,
Mar 21, 2014, 11:34:09 AM3/21/14
to android-g...@googlegroups.com

fkm様
ご返信ありがとうございます。

>どこが遅延しているか、Logcatを仕込むなどして測定してみましたか? 
>(通信が遅い/取得したデータ量の差がある など) 

無知で申し訳ありません。計測方法を知らなかったので実施しておりませんでした。
調べても具体的な情報が得られなかったのですが、大変恐縮ですがどのようにすれば計測できるかお教えくださると幸いです。

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

2014年3月21日金曜日 23時53分14秒 UTC+9 fkm:
> android-group-japan+unsub...@googlegroups.com にメールを送信してください。

Shigeo Mutoh

unread,
Mar 22, 2014, 2:18:40 AM3/22/14
to android-g...@googlegroups.com
武藤です。

WebViewの先読みを行う簡便な方法を期待されているかもしれませんが、
それは存在しないと思います。

WebViewと他のViewの同時表示ならば、WebView.setWebViewClient()で
コンテンツを読み込んだタイミングがわかるので、そこまで他のViewの表示
を遅延させれば可能かと思います。

しかし、ネットワークが切れているときや、遅いときにユーザーが不満に
思わないように工夫する必要も生じます。

個人的には1秒のバナー表示遅延を解決することは無意味な努力だと思います。
ユーザーの利便性を最大に優先してはいかがでしょうか。

では。

kenji matsuoka

unread,
Mar 22, 2014, 10:44:55 AM3/22/14
to android-g...@googlegroups.com
起動画面の「後」に読み込みをされているということですので
起動画面で画像を非表示か透明度ゼロの状態で読み込んでおき、画像をキャッシュに置かせて表示するとか
あるいは起動画面とその次の画面をそもそも同じActivityにして起動画面を非表示にすると同時に他のUIとともに(ロードが終わっていると期待される)WebViewを表示に切り替えるとかすればいいのではないでしょうか?

2014年3月21日金曜日 23時49分07秒 UTC+9 関本智史:

hyouga00

unread,
Mar 26, 2014, 8:32:18 AM3/26/14
to android-g...@googlegroups.com
ひょうがです。
アイディアだけ。通信がボトルネックの場合。
初回起動時はダミーを表示し、2回目以降は前回のバナーを保存しておき、更新されるまでは
前回のものを表示してお茶を濁す。とかじゃ駄目ですかね(^^;

2014年3月22日土曜日 23時44分55秒 UTC+9 kenji matsuoka:
Reply all
Reply to author
Forward
0 new messages