2012-03-09 9 views
2

私は2つのアクティビティアプリケーションを持っています。 1つは "ホームページ"です。もう1つは、Webビューだけを含む「DataPage」アクティビティです。ユーザーがHomePage上のボタンをクリックすると、DataPageを表示してURLをロードします。問題は、URLが非常に遅い読み込みページであることです。私は、私のアプリが開いているときに両方のアクティビティを作成して、この問題を解決したいと思います。ホームページが表示され、DataPageが非表示になります。すぐにDataPageのWebViewを起動し、バックグラウンドでロードします。ユーザーがボタンをクリックすると、そのデータの大部分がすでにロードされているDataPageが表示されます。Android:最初に非表示のアクティビティを作成し、非表示にしてデータを処理し、準備完了後にのみ表示します。

最初に非表示の状態でアクティビティを作成する方法はわかりません。そしてその活動を前面に出す?それをする方法はありますか?

答えて

3

あなたActivityがフォアグラウンドにない場合は、それのいずれかので、作成されていないが状態を一時停止、または停止状態。これらの時代には、バックグラウンドで自身をレンダリングすることはできません。あなたはActivity'sライフサイクルの次のフロー・チャートが含まれているものhere詳細を読むことができます:

Activity Lifecycle Flowchart

バックグラウンドスレッドを介してデータを取得するためのさまざまな方法があります。ページをローカルにキャッシュされたファイルとしてダウンロードすることができるので、DataPageはHTML/CSS/JavaScriptを開くときにレンダリングする必要がありますか?レンダリングページがボトルネックになっている場合は、これではあまり役に立ちません。

1

アクティビティをバックグラウンドで実行することはできません。つまり、Serviceが対象です。あなたの "DataPage"アクティビティが開始されたら、WebViewの可視性をgoneにデフォルト設定し、何かが起きていることを示すProgressBar(ローディングスピナー)を表示することをお勧めします。

WebViewでsetWebViewClientメソッドを使用して、onPageFinishedメソッドをオーバーライドするカスタムクライアントを提供できます。そのコールバックメソッドがトリガされると、進行状況バー(スピナー)を非表示にしてWebViewを表示できます。

このような何か:

WebView view = findViewById(R.id.my_webview); 
view.setWebViewClient(new WebViewClient() { 
    @Override 
    public void onPageFinished(WebView view, String url) { 
     super.onPageFinished(view, url); 
     view.setVisibility(View.VISIBLE); 
    } 
}); 
view.loadUrl("http://mydomain.com/"); 
関連する問題