1

ViewPagerの各ページのデータを最適にロードする方法について質問があります。

メールアプリにViewPagerを適用する前は、メールを表示するときに1つのページしか読み込まれないため、1つのバックグラウンドスレッド(LoadMailDetailThread)を使用してメールデータを読み込み、その特定のページのListViewにバインドしてデータを表示しました。LoadMailDetailThread内で、次のようなタスクを実行します-入力メッセージIDに基づいてメールをロードします。-メールを読み取りステータスに設定します。-メールコンテンツを解析して、各URLにハイパーリンクを追加します。-メールの内容を解析して、各電話番号へのリンクを追加します。-それをListViewにバインドします。等

これは、ViewPagerを使用する前の多くのアプリバージョンでうまく機能しました。

次に、ユーザーがスワイプしてメールを変更できるようにする機能を実装する必要があります。ViewPagerを適用した後、いつでも最大3ページをロードできるようになりました。既存のコードを再利用するために、各ページはLoadMailDetailThreadを使用してメールデータをロードし、そのページのListViewにバインドします。ただし、この新しいデザインでは、ページが表示されていない場合、すべてのタスクを実行する必要はありません。たとえば、メールを読み取りステータスに設定したり、メールを解析したりします。したがって、LoadMailDetailThreadに、現在表示されているページを読み込んでいるかどうかを区別させるために、フラグを渡します(1は表示されていることを意味し、0は表示されていないことを意味します)。したがって、表示されているページをロードする場合は、メールを読み取りステータスに設定して解析を実行します。それ以外の場合は、onPageSelectedでこれらのタスクを実行します。

LoadMailDetailThreadには、if(taskType == VISIBLE){} else if(taskType == NONVISIBLE){}などのifステートメントが多数あるため、これはあまり良い設計ではないと思います。

あらゆる所に。

私の質問は、この種の問題を解決するための推奨される方法またはパターンはありますか?表示クラスと非表示クラスに別々のクラスを作成しますか?または、LoadMailDetailThreadを変更して一般的なタスク(メールの読み込み)のみを実行し、onPageSelectedに詳細(メールをステータスの読み取り、コンテンツの解析)を実行させますか?

ありがとう

4

0 に答える 0