私の最後の質問は答えられなかったので、別のアプローチを試みています。多くのテクスチャ (256x256 RGBA888) をオンザフライでメモリにロードし、必要に応じて破棄します。問題は、テクスチャを ES にアップロードするときにOpenGL
40 ~ 80 ミリ秒かかることがありますが、それ以上かかることはめったにありません。この遅い時間はガベージコレクションの後であることがわかりました。問題は、これがスレッドをGC
ブロックする場合がありGL
(FPS ドロップ)、テクスチャ ローダー スレッドをブロックする場合がある (OK) ことです。どういうわけかスレッドGC
での発生を許可しない良い方法はありますか?GL
System.gc()
1、2、3...n のテクスチャがデコードされるたびにテクスチャ ローダー スレッドを呼び出してみましたが、これはスレッド上で効果的に削除されGC-ing
ましたが、GL
スレッドが GC の終了を待たなければならないため、テクスチャの読み込みが大幅に遅くなりました。"n" を大きくすると読み込みが速くなりますがGC
、GL
スレッド上では可能性が高くなり、アニメーションが途切れます。
別のスレッドでデコードされたビットマップをスレッドで削除する方法はありGC-ing
ますか? スレッドGL
上のビットマップのデコード/割り当ては行わず、新しいテクスチャがロードされたときにのみ発生します。GL
GC-ing
編集: アプリは Android 3.2 以降を対象としており、携帯電話も対象としています。これは、携帯電話 (HTC One S - 4.0.3) とタブレット (Nexus 7 - 4.1、Galaxy Tab 2 10.1 - 3.2 および 4.0、Acer Icona A200 - 4.0) で発生します。