私には問題があります: (そうでなければ私はここにいないでしょう ;)
「3D」モデルを表示する機能を持つアプリを作成しています。この部分は実際にはさまざまな角度から撮影された画像の集まりであり、ユーザーは「モデル」を「回転」させることができます。このアイデアはうまく機能していますが、問題は画像の読み込みにあります。
次の 2 つの方法があることがわかりました。
- すべての画像をメモリにロードし、正しい角度に切り替えるだけです。
- 必要に応じて画像をロードします。事前にいくつかロードできます。
ただし、これらには問題があります。
- 運が良ければ、画像は記憶に収まるでしょうが、そうではありません。それぞれ約 1.5 ~ 2 MB で、モデルごとに約 75 ~ 100 枚の画像があります。これにより、合計サイズは最小で約 115MB になります。
- 運が良ければ、ユーザーが「回転」するよりも画像が速く読み込まれますが、そうではありません。ユーザーは、まだロードされていないアングルに簡単に切り替えることができ、その結果、数秒間黒い画面が表示されます。
必要な画像をスタックに簡単に追加できるローダーを作成しました。ローダーは画像を 1 つずつロードします。ユーザーがかなりゆっくりとスクロールする場合、これは問題なく機能します。私のローダーは、終了時にメモリを解放する処理を行うため、ロードする画像の数に関係なく、メモリに保存する最大画像を指定している限り、通常、アプリはクラッシュしません。私のローダーは画像を非常に迅速にロードできますが、大きな画像をメモリにロードするにはまだ数ミリ秒 (~250ms) かかります。もちろん、ローダーは別のスレッドにあり、読み込みによって UI の応答が妨げられることはありません。そのため、ユーザーがすばやく前後にスワイプすると、実際には画像が表示されません。ロードとアンロードがすべて同時に機能して画像が表示されないためです:)
だから、私の問題: すべての画像をメモリにロードせずに、スムーズでユーザーに喜ばれる画像の回転を提供するにはどうすればよいですか?