ビューをレイアウトにロードするとき、およびビューが画面に表示されてから非表示になるときに、Android がメモリをどのように管理するかを知りたいです。
基本的に、ビットマップとテキストで満たされた非常に長いページを必要とするアプリを作成しています - Web ページに似ています。多くのビューや画像を処理するには、GridView や ListView などの標準ビューを使用する必要があることはわかっていますが、これはニッチなアプリケーションです。(デザインは固いです)
このレイアウトがあるとします
<ScrollView>
<LinearLayout>
1000 ImageViews vertically stacked inside here.
</LinearLayout>
</ScrollView>
ScrollView が読み込まれると、すべての ImageView が画面に収まるわけではありません。画面にない ImageView ビットマップはメモリに読み込まれますか? そうでない場合、それらがスクロールされて表示された後、スクロールされて表示されなくなり、メモリから削除されますか?
注: GridViews / ListViews がこの目的のために設計されていることは知っていますが、私のアプリにはこれらのビューに対応できない特別な設計があります。
潜在的な解決策: gridview を拡張して、高さが固定され、含まれているものが下部に達するまでスクロールしないようScrollView
にします。すなわち:
<ScrollView>
<LinearLayout>
Lots of text and a few images.
<GridView> <-- attach listener so that touch events are
ignored until at bottom of scroll view -->
1000s of ImageViews
</GridView>
</LinearLayout>
</ScrollView>