WebViewを使用したWebページの表示について質問がございます。
本文の最後にあるようなBrowserActivityクラスを作成し、
このクラスを使ってWebページを表示していたのですが、
Webページの内容によっては、
loadUrlメソッドの実行に時間が掛かってしまうため、
このActivityに遷移した後に画面全体が真っ白な状態が
数秒続くという不具合に悩んでおります。
そこで、BrowserActivityをバックグラウンドで実行して
Webページの先読みを行わせ、特定のボタンが押されたら
BrowserActivityを最前面に表示させるといったことは可能でしょうか?
また、他の方法でWebページの先読みを行えるようでしたら、
その方法についてご教示いただけないでしょうか。
宜しくお願いいたします。
------------------------------------------------------------
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class BrowserActivity extends Activity
{
@Override
public void onCreate( Bundle savedInstanceState )
{
super.onCreate( savedInstanceState );
setContentView( R.layout.browser_main );
WebView webView = (WebView)findViewById( R.id.webview );
webView.setWebViewClient( new WebViewClient()
{
@Override
public boolean shouldOverrideUrlLoading( WebView view,
String url )
{
view.loadUrl( url );
return true;
}
});
// JavaScriptを有効にしておかないとページを表示できないので有効
にしておく
webView.getSettings().setJavaScriptEnabled( true );
ApplicationSettings settings = new ApplicationSettings( this );
// Webページを読み込む
webView.loadUrl( settings.getStartupUrl() );
}
}
------------------------------------------------------------
ゆぅかです。こんばんわ。
ご希望の動作とは異なりますが、
よくあるようにプログレスを表示させるというのは、
NG な感じでしょうか?
ゆぅか。
ごめんなさい。。
> このActivityに遷移した後に画面全体が真っ白な状態が
> 数秒続くという不具合に悩んでおります。
↑こちらが問題の本質かと思いまして、
ぐるぐるプログレスの方が自然かな?と思ったのですが、
「先読み」が目的であれば、するめさんの方法ですね。
(*´ω`*)
2011年4月13日22:07 するめ <chicchi....@gmail.com>:
お疲れ様です。小浦です。
> FrameLayoutとWebViewClientのonPageFinishedで実装できないでしょうか。
BrowserActivityのようなWebページ表示用のActivityは用意せずに、
FrameLayoutを使用して一つのActivityで
Webページも表示させるということでしょうか。
上記の方法は一度試しており、確かにWebページの先読みは行えるのですが、
裏でメインのActivityの処理が動作しているせいか、
Webページの動作が重くなってしまうため
別のActivityにWebページを表示させる機能を
切り分けたという経緯がございます。
別ActivityでWebページを表示したときの動作速度には及ばないですが、
WebViewよりも後ろに表示されているビューを非表示にするなどで
Webページの動作速度が改善するようなので、
他にも無駄な処理を行っていないか再度確認したいと思います。
小浦です。
アドバイスをいただきましてありがとうございます。
現在開発中のアプリではWebページ側でプログレスを表示することがあり、
プログラム側でもプログレスを表示すると
二重にプログレスが表示されてしまう可能性があったため、
プログラム側でプログレスを表示するのは見合わせておりました。
Webページの先読みが難しければプログラム側でのみ
プログレスを表示させることを検討したいと思います。
(2011/04/13 20:52), yuka2py wrote:
> ゆぅかです。こんばんわ。
>
> ご希望の動作とは異なりますが、
> よくあるようにプログレスを表示させるというのは、
> NG な感じでしょうか?
>
> ゆぅか。
>
> 2011/04/13 9:05 "小浦 新市" <ko...@karakuri-ism.com
> <mailto:ko...@karakuri-ism.com>>:
> <mailto:android-g...@googlegroups.com> にメールを送信してください。
> > このグループから退会するには、android-group-
> japan+un...@googlegroups.com
> <mailto:android-group-japan%2Bunsu...@googlegroups.com> にメールを送
> 信してください。
> > 詳細については、http://groups.google.com/group/android-group-
> japan?hl=ja からこのグループにアクセスしてください。
> >
>
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送ら
> れています。
> このグループに投稿するには、android-g...@googlegroups.com にメー
> ルを送信してください。
> このグループから退会するには、android-group-
> japan+un...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
> からこのグループにアクセスしてください。
ゆぅかです。こんばんわ。
そういうことなんですねー。
では、先に自分で html だけ取得してから、BrowserActivity を start するのは如何でしょうか?
インテントとかで BrowserActivity に html テキストを渡して、WebView に setData (だったかな?) する感じです。
たしか mimetype とbase url とかも指定します。
画像などのロードは後になりますが、html が比較的ちゃんとしてたら、画面真っ白は無さそうに思います(試してないです。すみません)。
もとの Activity で http アクセスする時にぐるぐるまわしてあげたら良さそうです。
試してなくって、しかも html なよってはあまり有効で無いレスですみません。
(*´σー`)
わたしてきにわ、ブラウザの Activity はわけるほうが、
いろいろスッキリしてキレイそうに思ったもなで。
すみません。
あと、でも他にもやりようありそうですね。
ゆぅか。
2011/04/14 16:47 "小浦 新市" <ko...@karakuri-ism.com>:
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
お世話になっております。小浦です。
再度アドバイスをいただきましてありがとうございます。
ご提案いただきました方法(loadUrlではなくloadDataWithBaseURLを使う)を
試してみたのですが、状況はあまり変わりませんでした。
なかなか上手くいかないものですねえ・・・
(2011/04/14 21:17), yuka2py wrote:
> ゆぅかです。こんばんわ。
>
> そういうことなんですねー。
> では、先に自分で html だけ取得してから、BrowserActivity を start するの
> は如何でしょうか?
> インテントとかで BrowserActivity に html テキストを渡して、WebView に
> setData (だったかな?) する感じです。
> たしか mimetype とbase url とかも指定します。
>
> 画像などのロードは後になりますが、html が比較的ちゃんとしてたら、画面
> 真っ白は無さそうに思います(試してないです。すみません)。
>
> もとの Activity で http アクセスする時にぐるぐるまわしてあげたら良さそう
> です。
>
> 試してなくって、しかも html なよってはあまり有効で無いレスですみません。
> (*´σー`)
>
> わたしてきにわ、ブラウザの Activity はわけるほうが、
> いろいろスッキリしてキレイそうに思ったもなで。
> すみません。
>
> あと、でも他にもやりようありそうですね。
>
> ゆぅか。
>
> 2011/04/14 16:47 "小浦 新市" <ko...@karakuri-ism.com
> <mailto:ko...@karakuri-ism.com>>:
> >
> > ゆぅか様
> >
> > 小浦です。
> > アドバイスをいただきましてありがとうございます。
> >
> > 現在開発中のアプリではWebページ側でプログレスを表示することがあり、
> > プログラム側でもプログレスを表示すると
> > 二重にプログレスが表示されてしまう可能性があったため、
> > プログラム側でプログレスを表示するのは見合わせておりました。
> >
> > Webページの先読みが難しければプログラム側でのみ
> > プログレスを表示させることを検討したいと思います。
> >
> >
> > (2011/04/13 20:52), yuka2py wrote:
> > > ゆぅかです。こんばんわ。
> > >
> > > ご希望の動作とは異なりますが、
> > > よくあるようにプログレスを表示させるというのは、
> > > NG な感じでしょうか?
> > >
> > > ゆぅか。
> > >
> > > 2011/04/13 9:05 "小浦 新市" <ko...@karakuri-ism.com
> <mailto:ko...@karakuri-ism.com>
> > > <mailto:ko...@karakuri-ism.com <mailto:ko...@karakuri-ism.com>>>:
> > > <mailto:android-g...@googlegroups.com
> <mailto:android-g...@googlegroups.com>> にメールを送信してください。
> > > > このグループから退会するには、android-group-
> > > japan+un...@googlegroups.com
> <mailto:japan%2Bunsu...@googlegroups.com>
> > > <mailto:android-group-japan%2Bunsu...@googlegroups.com
> <mailto:android-group-japan%252Buns...@googlegroups.com>> にメールを送
> > > 信してください。
> > > > 詳細については、http://groups.google.com/group/android-group-
> > > japan?hl=ja からこのグループにアクセスしてください。
> > > >
> > >
> > > --
> > > このメールは Google グループのグループ「日本Androidの会」の登録者に送ら
> > > れています。
> > > このグループに投稿するには、android-g...@googlegroups.com
> <mailto:android-g...@googlegroups.com> にメー
> > > ルを送信してください。
> > > このグループから退会するには、android-group-
> > > japan+un...@googlegroups.com
> <mailto:japan%2Bunsu...@googlegroups.com> にメールを送信してください。
小浦です。
ブログ記事のご紹介ありがとうございます。
ViewFlipperを使ってのローディングアイコンの表示は
実装したことがなかったので大変参考になりました。