2

ListActivity と Adapter がある場合、Android は 200 個の要素を持つリストをどのように処理しますか。ユーザーがスクロールしてそれらの要素をレンダリングするまでどのように待機するのですか?

リストが長すぎる場合、パフォーマンスを心配する必要はありますか?

4

3 に答える 3

1

アダプターがどのように実装されているかによって異なります。

サブクラス化されていないアダプターがある場合 (SDK によってプロバイダーであるアダプターを使用する場合)、Android はそれらすべてを直接ロードしようとします。

SimpleCursorAdapterをサブクラス化し、カスタム アダプターを実装することをお勧めします。このようにして、たとえば 10 個のビュー (画面が必要とする数) があり、そのビューは残りの 190 レコードに再利用されます。

于 2010-06-27T13:41:11.567 に答える
1

この質問にはいくつかの部分があります。まずはデータそのもの。それはクエリを介してSQLiteデータベースから来ていますか? その場合、結果全体を含む Cursor オブジェクトがあります。したがって、200 行を生成するクエリがある場合、200 行すべてがメモリ内にあることになります (これが、予測を狭めることが非常に重要な理由です)。

リスト自体に関しては、その部分は非常に効率的です。Android は、実際に表示できる要素のビューのみを作成します。また、使用しているビューの種類とリサイクルをサポートしているかどうかに応じて、Android は実際に既存のオブジェクトをリサイクルして、初期化とメモリ管理のオーバーヘッドを最小限に抑えます。

于 2010-06-28T03:20:52.257 に答える
0

Androidが内部でどのように処理するかはわかりません。しかし、私が見たほとんどのプログラムは、20 個ほどのアイテムをロードし、最後のアイテムに「次の 20 個のアイテムをロードする」と表示させることで問題を処理しています。次にクリックすると、次の 20 項目が読み込まれます。

于 2010-06-27T23:51:09.197 に答える