首先不要一次獲得100個,沒有辦法在gridview中顯示100個圖像,並使它們成爲一個有用的可見大小。異步檢索圖像並一次獲得一個屏幕或一個半屏幕。我猜你可以在支持文本/用戶界面元素的情況下顯示每個屏幕大小爲6到9的適當尺寸的圖像,你甚至可以根據手機的屏幕尺寸/分辨率選擇顯示多少個屏幕。所以你應該一次獲得9到12張圖片。
其次,我不知道這些圖像是以什麼樣的分辨率進入的,但它聽起來像'大'。如果API支持,它只會收到您的網格視圖的縮略圖版本。如果不是,我可能會做的是:當您從API接收到圖像時,首先創建一個縮小到您的縮略圖所需大小的新圖像,並將其保存在內存中。然後創建一個縮小到「細節」屏幕所需大小的新圖像(如果有的話),並將其緩存到SD卡中,並將其從內存和原始源圖像中釋放出來,這種縮放可能會發生在一個單獨的線程中,以避免影響UI線程的響應。根據使用模式的不同,我可能也會將縮略圖緩存到SD卡,因此釋放它們在onStop/onPause中使用的RAM並將它們重新加載到onStart/onResume會很便宜。 IT也聽起來像你下載一個'前100'或類似的東西。由於我不希望在每個應用程序中使用新的top 100,所以您可以通過將圖像和信息緩存到SD卡並每次程序運行時只下載新條目來節省大量網絡流量。
備選的方法,如:
接收圖像 - >縮放到位細節大小 - >高速緩存細節大小 - gridview的>顯示縮略圖而異步
緩存縮略圖 - >尺度細節大小到位縮略圖大小
會使用更少的內存,因爲內存中只有圖像的一個副本,但會降低gridview的響應速度,因爲圖像在顯示前必須縮放兩次。它可能足夠快,無關緊要,或者您可以通過在後臺生成縮略圖的同時顯示大圖像(內部縮放)來操作網格視圖的技巧,並在網格視圖準備就緒後將其切換爲縮略圖。你只需要嘗試確定它是否足夠快。