TabActivity
3つのタブが定義されています。最初のタブは軽量で、許容時間内にレンダリングされます。しかし、2番目と3番目のタブは、クリックしてから視覚的にレンダリングされるまでに数秒かかります。最初のタブをロードした後、プリキャッシュのためにバックグラウンドでそれらを起動したいと思います。それらがロードされると、私はそれらをすばやく切り替えることができます。
では、どうすれば2番目と3番目のタブを起動できるのでしょうか。これらは、ビュー領域にロードされる新しいアクティビティです。
TabActivity
3つのタブが定義されています。最初のタブは軽量で、許容時間内にレンダリングされます。しかし、2番目と3番目のタブは、クリックしてから視覚的にレンダリングされるまでに数秒かかります。最初のタブをロードした後、プリキャッシュのためにバックグラウンドでそれらを起動したいと思います。それらがロードされると、私はそれらをすばやく切り替えることができます。
では、どうすれば2番目と3番目のタブを起動できるのでしょうか。これらは、ビュー領域にロードされる新しいアクティビティです。
ステップ #1: タブのコンテンツとして使用されているすべてのアクティビティを削除します。
ステップ #2: それらをあるもの(アクティビティのメイン レイアウト ファイル内Views
のあなたの子)として書き直して、それを機能させます。タブのコンテンツとしてアクティビティを使用すると、オーバーヘッドが増えて意味のある利点が得られません。FrameLayout
TabHost
それでもパフォーマンスの向上が不十分な場合は...
ステップ #3: 2 番目と 3 番目のタブを別のレイアウト ファイルに移動します。それらを膨らませますが、それらonCreate()
を保持してください (それらを に取り付けないでくださいTabHost
)。タブ仕様を追加するときは、 を取るものを使用しTabContentFactory
、工場で事前に構築された を取得しViews
ます。
それが単にパフォーマンスの問題を にシフトする場合onCreate()
は...
ステップ #4: バックグラウンド スレッドでこれらのビューをインフレートして設定してみてください。Android はバックグラウンド スレッドでの UI 操作を好まないため、これは爆発する可能性があります。たとえそれが機能したとしても、作業が完了する前にユーザーが 2 番目のタブをクリックする可能性に対処するための賢明さが必要です。
または、それらのタブがやろうとしていることをスピードアップして、少なくとも最初はそれほど時間がかからないようにすることもできます。