2011-07-06 5 views
4

私は、数秒後にWebViewを持つメインアクティビティを開くスプラッシュスクリーンを持つアプリを持っています。問題は、主なアクティビティがURLの読み込みを開始することであり、数秒かかることがあります。それは二重の待ち時間のために愚かなようです。しかし、WebViewをプリロードしようとする試みはそれほど成功しませんでした。Androidは、スプラッシュスクリーンが表示されている間にWebViewにURLをプリロードします

問題の本質は、スプラッシュ画面と主な活動は、2つの異なる活動であり、WebViewのが主な活動へのリソースバインド(レイアウト)であるということです。 WebView(webview2 = webview1)のコピーは、驚くことではありません。

提案?

答えて

8

これらの手順に従います。

1)画面にスプラッシュレイアウトを設定します。

2)新しいスレッドを開始します。このスレッドでは、webviewを含むレイアウトを拡張します。

3)URLをwebViewに読み込みます。 Webview Clientをwebviewに設定して、ページの読み込みが完了したことを確認します。 There is a quick example。 onPageFinishedをオーバーライドします。

4)次に、スレッドを分割し、次のアクティビティにこの膨張ビューを渡し、setContentView(inflatedView)に設定します。

ありがとうございました。

+0

を持っている場合、私は、スレッド内に膨張しようとすると、私は、しかし、あなたの提案をしようとしていますそれは、鈍的な例外(バイナリXMLファイル行#15:Error inflating class android.webkit.WebView)をスローします。その後、スタックトレースに、より有益なものはこれです: java.lang.RuntimeException ..その前に見たことはありません)Looper.prepareを(と呼ばれていないスレッド内のハンドラを作成 – Jahmic

+0

ハンドラを作成し、ハンドラを呼び出すことはできませんそのスレッドから。 UIスレッドよりもスレッドからUI要素にアクセスすることはできません。またはUIスレッドのすべてのものを行う。あなたは仕事を探す必要があります。 –

+0

これはうまくいきました。ページはまだ読み込むのに時間がかかりすぎます。 ;) – Jahmic

0

は、X秒後にView.GONEにあなたのWebViewのとsetVisibility ABOVE spash画面でレイアウトを作ります。あなたはそれがスプラッシュの後ろにロードされますのonCreate上のWebViewをロードし、そして時にスプラッシュ画面disapearsあなたは既にロードのWebView :)

関連する問題