2014-05-09 19 views
0

我使用谷歌地圖視圖,並使用此代碼添加標記到它:Reycle位圖在Android中

googleMap.addMarker(new MarkerOptions() 
.position(chargingStationObject.geoData) 
.title(chargingStationObject.name) 
.snippet(chargingStationObject.stationAvailability) 
.data((chargingStationObject.id)) 
.icon(iconDescriptor)); 

iconDescriptor是這樣創建的:

iconDescriptor = BitmapDescriptorFactory.fromResource(getResources() 
    .getIdentifier("mapicon", "drawable", getActivity().getPackageName())); 

當有太多的標記我地圖中,堆被填充到最大值,過了一段時間後,應用程序崩潰,出現內存不足異常。只有在地圖上存在或存在大量標記時纔會發生這種情況。即使在我調用.clear()之後,堆仍然很大。

也許位圖還沒有被正確回收?

+0

有你知道的集羣? –

+0

是循環內的這段代碼嗎? –

+0

@Haresh是的,但我有理由不使用集羣。 – deimos1988

回答

0

做事。

我假設,您在所有位置都使用相同的標記。

把這裏

if(iconDescriptor==null){ 
      iconDescriptor = BitmapDescriptorFactory.fromResource(getResources().getIdentifier("mapicon", "drawable", getActivity().getPackageName())); 
     } 

的情況不要爲每個標記使用的只有一個副本,新的位圖,看看會發生什麼。

+0

iconDescriptor = BitmapDescriptorFactory ...只在onCreate()上調用過一次,我已經想到了:) – deimos1988

+0

然後你必須使用clustering。 –

+0

好吧,但是不應該有可能在地圖上不再顯示那些已使用的位圖後再使用它們(我不確定它們是否被回收,這就是爲什麼我想自己啓動該過程) – deimos1988