2 つのタブとそれぞれにリスト ビューがあるアクティビティがあります。アクティビティの読み込みと開始を非常に高速にしたいと考えています。両方のリスト タブにデータを入力すると、そのアクティビティが開いたときにアプリの動作が遅くなるのではないかと心配しています。アプリのスプラッシュ画面でデータベースからデータをロードし、ビューの配列を作成してから、そのアクティビティが開始されたら、それらをリストビューに単にスローすることを考えています。これは努力する価値がありますか?このようなことを行う簡単な方法を見つけることができないようです。カスタム アレイ アダプターが必要になると思います。誰かがこのようなことをした経験がありますか? それとも、 onCreate() でカーソル アダプターを使用するという標準に固執することをお勧めしますか?
1 に答える
それらをそれほど速くロードする必要がある理由は何ですか。一般に、アイテムはデータベースから非常に高速に読み取ることができます。この操作で UI スレッドをブロックしないように、AsyncTaskでこれを行う必要があります。
もう 1 つのポイントは、ListView 内のデータベースから項目を表示する場合は、一度にすべての項目を読み取って、リストにバインドする配列に配置するべきではありません。代わりに、データベース クエリから取得した Cursor を使用し、それをSimpleCursorAdapterまたはCursorAdapterにバインドしてから、ListView にバインドする必要があります。CursorAdapter は、必要に応じて Cursor からデータを読み取るように最適化されています。オブジェクトの作成は、Android ではコストのかかる操作であり、不要であれば避ける必要があることに注意してください。リストが非常に大きく、ユーザーが常にリスト全体を適切にスクロールするとは限らない場合、すべてのアイテムをプリロードしてビューを作成するのはなぜですか?
もちろん、スプラッシュ画面でデータベースを事前にクエリし、返されたカーソルを必要になるまでどこかに保存することもできます。
しかし、最初に言ったように、私はあなたのアプリケーションが何をするかわからないので、努力する価値があるかどうかを言うのは難しい.