2

我想知道Android在将视图加载到布局中以及何时显示然后不显示在屏幕上时如何管理内存。

基本上,我正在制作一个应用程序,它需要一个非常长的页面,其中包含位图和文本——类似于网页。我知道我应该使用 GridView 和 ListView 等标准视图来处理大量视图和图像,但这是一个小众应用程序。(设计一成不变)

说我有这个布局

<ScrollView>
    <LinearLayout>
        1000 ImageViews vertically stacked inside here.
    </LinearLayout>
</ScrollView>

加载 ScrollView 时,并非所有 ImageView 都适合屏幕 - 不在屏幕上的 ImageView 位图是否仍加载到内存中?如果不是,当它们被滚动到视图中时,它们会被从内存中删除?

注意:我知道 GridViews / ListViews 是为此目的而设计的,但我的应用程序的特殊设计无法容纳这些视图。

潜在的解决方案:扩展gridview,使其具有固定的高度,并且直到ScrollView它包含在底部时才滚动。IE:

<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 回答