2

私は現在、約 25 の異なるフラグメント (および異なる)ViewPagerを含むアダプターを使用しています。スクロールすると、宣言する場合を除いて、一部のビューにスワイプすると、通常かなりの遅延が発生します。すべてのページを常にロードすることなく、この のパフォーマンスを向上させる方法はありますか?FragmentStatePagerrelativelayoutsviewpager.setoffscreenpagelimit(25)viewpager

4

2 に答える 2

3

箱から出してViewPagerを使用すると、最大3つのフラグメント/ビューがロードされます。その番号にとどまります。遅いのはViewPagerではなく、コード内で何かを行っているために遅くなっています。フラグメントのいずれかがブロッキングまたはCPUを消費するタスクを実行しますか?たとえば、ビットマップをロードしますか?AsyncTaskで実行できる解析がありますか?たぶん、そのようなものを他の場所に置いてデータベースに保存すると、Framentをロードするときに、データベースから読み取る場合に非常にクリーンで効率的な状態を保つことができます。

于 2013-03-07T11:19:36.457 に答える
1

質問に詳細を追加していただけますか?たとえば、各ページで何をしていますか?

最新のAndroidサポートライブラリに更新しましたか?

v4サポートライブラリの変更点:

  • ViewPagerのインタラクション動作が改善されました。
  • ViewPagerが間違ったページを選択する可能性があるバグを修正しました。
  • ViewPagerのレイアウト中のremoveView()メソッドの使用を修正しました。
  • 戻るボタンを使用して閉じると検索テキストがクリアされないSearchViewCompatの問題を修正しました。この修正は、ホストAPIレベル14以降にのみ適用されます。

FragmentStatePagerAdapterはページを自動保存し、使用しない場合は削除することを常に覚えておく必要があります。したがって、非常に速くスワイプすると、ページのロード/アンロードが多くなります。メモリにロードされるページの量を増やすことを試みることができます。

于 2013-03-07T11:20:53.837 に答える