オフトピック: お時間をいただきありがとうございます。私の英語で申し訳ありません。
問題は、スワイプ時のラグViewPager
です。
使用される構成は、TabHost
タブ (およびダミー コンテンツ) を使用ViewPager
し、4 つのフラグメントを使用FragmentPagerAdapter
してそれを管理します。
4 つのフラグメントすべてにリストがあり、レイアウト内に他のウィジェットがあるものもあります。問題は 2 つのフラグメント、またはそれらのフラグメントの 2 つのリストが非常に重いことです。リスト項目にはLinearLayout
、CursorAdapter
. ここに大きな問題があることはわかっていますが、運がなければ、この「パーセンテージ幅」リスト項目にアプローチするのに小さな頭が苦労しました。
しかし、いくつかのログの後、スワイプするたびに 3 つのマネージド フラグメントが「無効化」されていることがわかりました。私が見ているのは、すべてのリストがアイテムを何度も(何度も)バインドしているため、「無効」を意味します。また、2 つの重いリストを含む 3 つのリストを再描画するため、遅延が発生します。
私のコードの指摘すべき2つのこと:私はカーソルローダーを使用しています. オンFragmentPagerAdapter.onPageSelected
現在のタブのみを更新しています。
(3) を設定ViewPager.setOffScreenPageLimit
して 4 つのフラグメントを存続させると、事態はさらに悪化します。フラグメント 3 から 4 にスワイプしても、最初のフラグメントのリストが再レンダリングされます。
私の回避策は、を使用してonPageSelected
、現在のリスト ビューの可視性を Visible に設定し、他のビューを非表示に設定することです。これらのアプローチにより、ラグはなくなります (95% としましょう) が、作成される前に空のリスト ビューをスクロールするとわかります。
ある時点で間違っている場合は、重要なアイデアを見逃している可能性があります。誰かが可能な解決策を持っている場合、おそらくそれらのレクリエーションを回避するか(方法はわかりません)、または他の人が同じようになっている場合、それを解決するために何もすることはありません.
ソースを調べてみViewPager
ますが、ファイルを開いたところです woouu.. この問題でテストプロジェクトを取得しようとします。
どうもありがとうございました。