0

MonoTouch for iOS でアプリを開発しています。

機能の大部分は、ユーザーがデータのページ (画面) 間を連続的にスワイプして前後に移動する必要があることです。

メモリ消費を念頭に置く必要があるため、一度にメモリに保持できる画面は数個だけだと思います。たとえば、次の 1 画面のみを事前に遅延ロードするため、ユーザーがスワイプしたときに使用できます。(またはスワイプでの遅延ロード)。

ユーザーが前のページにスワイプしたときに、そのページがまだメモリ内にあり、メモリから離れていないことを確認する必要があります。ページが少し遅れている場合、ユーザーがスワイプして戻ると、遅延再読み込みできます。したがって、ユーザーがしばらく画面を表示していない場合に画面を GC に送信し、ユーザーがそのページにスワイプしたときに自動的に読み込まれるようにするメカニズムが必要です。

各オブジェクトが実際のビュー自体への参照とともにビューに表示するものに関する情報を持っているオブジェクトのリストを作成することを考えていました。この参照が null の場合、ビューを作成することがわかっています。参照が存在し、破棄されていない場合は、既存の参照をユーザーに表示できます。ユーザーが左右にスワイプすると、リスト内の次 (または前) の項目に移動して、同じことを行うことができます。ビュー参照があるかどうかを確認し、そのビューをロードするか、作成してください。

ユーザーは数百 (またはそれ以上) の画面をスワイプする可能性があるため、ここではパフォーマンスが重要です。

速度とメモリ管理に最適なアーキテクチャについて何か考えはありますか?

4

1 に答える 1

0

重要なのは、可能であればビューを再利用することです。私のアプリでは、あなたが望むものと同じように左/右にスワイプし、最大3つのビューを作成する必要があります。1つは「画面上」、次に右/左は画面外です(ただし、左は必要になるまで作成されません) )。

スレッド内のページの構築に可能な限り関連して、メインスレッドのUIを更新するだけで、かなりクリエイティブになります。また、新しいデータセットをロードするときは、最初に表示されるページに焦点を合わせてから、右の非表示ページに移動し、意味がある場合は、左の非表示ページに移動します。ユーザーが新しいページにスワイプすると、ビューが再利用され、より大きなUIScrollViewコンテンツ領域内を移動します。

于 2012-11-18T23:47:51.973 に答える