##データにする理和视〉加取分分個別のデータ処理とビューの読み込み個別のデータ処理とビューの読み込み
リモートからのデータのプルは非同期である必要があることがわかっています。データをプルした後、処理のために急いでVHにデータをスローする可能性があります。実際には、データ処理ロジックも非同期処理に配置する必要があります。アダプターが変更を通知した後、ViewHolderは、次のように、データを実行し、バインディングロジックを簡単かつプレッシャーなしで表示できます。
mTextView.setText(Html.fromHtml(data).toString());
ここでのHtml.fromHtml(data)メソッドは、より時間がかかる可能性があります。複数のTextViewがある場合、より時間がかかり、フレームのドロップとフリーズが発生します。このステップをネットワーク非同期スレッドFromと組み合わせると、ユーザーの観点からすると、ネットワークの更新時間はせいぜい少し長くなります。
データの最適化
リモートデータをページごとにプルし、プルしたリモートデータをキャッシュし、セカンダリロードの速度を向上させます。新しく追加または削除されたデータの場合、データを盲目的にグローバルに更新するのではなく、DiffUtilを使用してデータをローカルに更新します。
レイアウトの最適化
遷移描画を減らす
レイアウトレベルを下げるには、カスタムビューを使用してレベルを下げるか、レイアウトをより合理的に設定してレベルを下げることを検討できます。RecyclerViewでConstraintLayoutを使用することはお勧めしません。多くの開発者は、それを使用する方が悪いとすでに報告しています。関連するリンクは次のとおりです。ConstraintLayoutは遅いですか?、constraintlayout1.1.1はリストビューでうまく機能しません。
xmlファイルの膨張時間を短縮します
ここでのxmlファイルには、レイアウトのxmlだけでなく、ドローアブルのxmlも含まれています。xmlファイルは、特にTypeが増加するにつれて、Itemの再利用の可能性が非常に低い場合に、時間のかかるIO操作によってItemViewを膨らませます。 、this inflateによる損失は非常に大きいです。現時点では、の各ノードの属性に対応するAPIを把握している限り、コードを使用してレイアウト、つまり新しいView()メソッドを生成できます。 xml。
ビューオブジェクトの作成を減らす
少し複雑なアイテムには多数のビューが含まれ、多数のビューの作成にも多くの時間がかかるため、ItemViewは可能な限り単純化する必要があります。ItemTypeを設計するときは、カスタムを設計してみてください。複数のViewTypeで共有できるパーツのビューで、ビューの構築とネストを削減します。
その他
その他は重要ではないという意味ではありませんが、分類することはできません。一部の操作では、RecyclerViewが大幅に最適化される場合があります。
- プリフェッチ機能を使用するには、RecycleViewバージョンを25.1.0以降にアップグレードしてください。RecyclerViewデータのプリフェッチを参照してください。
- アイテムの高さが固定されている場合は、RecyclerView.setHasFixedSize(true);を使用して、requestLayoutがリソースを浪費しないようにすることができます。
- スライドプロセス中にロードを停止するには、RecyclerView.addOnScrollListener(listener);を設定します。
- アニメーションが不要な場合は、((SimpleItemAnimator)rv.getItemAnimator())。setSupportsChangeAnimations(false);を渡して、デフォルトのアニメーションをオフにして効率を向上させることができます。
- android:textAllCaps = "true"の代わりに、TextViewにString.toUpperCaseを使用します。
- 代わりに、TextViewにStaticLayoutまたはDynamicLayoutカスタムビューを使用します。
- RecyclerView.onViewRecycled(holder)をオーバーライドして、リソースをリサイクルします。
- RecycleView.setItemViewCacheSize(size);を使用してRecyclerViewのキャッシュを増やし、時間のスペースを使用してスクロールのスムーズさを向上させます。
- 複数のRecycledViewsのアダプターが同じである場合、たとえば、ネストされたRecyclerViewに同じアダプターが存在する場合、RecyclerView.setRecycledViewPool(pool);を設定することでRecycledViewPoolを共有できます。
- ItemViewのリスナーを設定します。アイテムごとにaddXxListenerを呼び出さないでください。頻繁なオブジェクト作成によって発生するリソース消費を最適化するには、XxListenerを共有し、IDに基づいてさまざまな操作を実行する必要があります。
- getExtraLayoutSpaceを介してRecyclerViewによって予約されている追加のスペースを増やします(表示範囲外では、追加のキャッシュスペースが必要です)
やっと
いつかあなたが自分を愛し、自分に優しくなりますように。
この記事はオープンソースプロジェクトにあります:Android開発はどうですか?面接で高給を得る方法 が含まれており、さまざまな方向での自己学習プログラミングルート、面接の質問収集/対面、一連の技術記事などが含まれています。リソースは継続的に更新されています。 。