2013-02-28 70 views
2

我想知道Android在將視圖加載到佈局時以及在何時顯示並且未在屏幕上顯示時如何管理內存。當視圖顯示時,Android如何管理內存?

基本上我做了一個應用程序,需要一個非常非常長的頁面,填充位圖和文本 - 類似於網頁。我知道我應該使用標準視圖,如GridView和ListView來處理大量的視圖和圖像,但這是一個利基應用程序。 (設計是一成不變的)

說我有這個佈局

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

當滾動型加載並非所有的ImageViews將適合在屏幕上 - 是ImageView的位圖是不是在屏幕上仍然加載進入記憶?如果沒有,當它們滾動到視圖中時,它們會從視圖中滾動出來,並從內存中移除它們?

NB:我知道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> 

回答

0

是的,即使它們不可見,它們也被加載到內存中。在不使用ListView和延遲加載圖像的情況下執行此操作可能會導致您的應用在內存不足的設備上運行並導致崩潰。

而且,你的潛力是不是會是因爲投入的事情,這裏面滾動始終是一個壞主意,並會導致很多的麻煩與得到適當的觸摸事件,準確地處理他們其他的事情滾動可行的。 See this answer

+0

是的,這是我認爲可能發生的事情。 – JackMahoney 2013-02-28 05:01:15

+0

感謝您的更新。我已經在過去的滾動視圖中放置了滾動視圖,但它可以完成http://stackoverflow.com/questions/9804230/list-view-inside-a-scroll-view(我的回答) – JackMahoney 2013-02-28 05:10:03

+0

很酷。如果你有信心,那就去做吧。 – 2013-02-28 05:12:57