2

ビューをレイアウトにロードするとき、およびビューが画面に表示されてから非表示になるときに、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>
4

1 に答える 1

0

はい、表示されていなくてもメモリにロードされます。ListView を使用せずに画像を遅延読み込みすると、メモリの少ないデバイスでアプリがメモリ不足になり、クラッシュする可能性があります。

また、スクロールするものを他のスクロールするものの中に入れることは常に悪い考えであり、適切なタッチイベントを取得してそれらを正確に処理することに関連する多くの手間がかかるため、あなたの可能性は機能しません. この回答を参照してください

于 2013-02-28T04:59:58.543 に答える