簡體   English   中英

google maps android api v2的java.lang.OutOfMemoryError

[英]java.lang.OutOfMemoryError with google maps android api v2

我寫了這個程序來重疊圓圈,以顯示我一直在使用google maps android api v2的地方。 大約2個小時后,我收到了java.lang.OutOfMemoryError,堆大小大於分配的大小。 從堆棧跟蹤...(堆大小= 98304KB,已分配= 86536KB)

為什么要占用這么多內存來存儲所有這些重疊的圓?

public void onLocationChanged(Location location) {

     CircleOptions circleOptions = new CircleOptions()
        .center(new LatLng(location.getLatitude(), location.getLongitude()));

    circleOptions.radius(10); // In meters

          mMap.addCircle(circleOptions);

}

關於如何減輕這種情況的任何建議? 我想保留圓圈,因此不能使用map.clear()。 另外,我還需要繼續使用圓,因為它允許我在地圖上設置路徑寬度。

位置管理器可以采用以下參數:

provider        the name of the provider with which to register
minTime         minimum time interval between location updates, in milliseconds
minDistance     minimum distance between location updates, in meters
listener        a LocationListener whose onLocationChanged(Location) method will be called for each location update

locationmanager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 200, 0, this);

增加最小時間間隔或位置更新之間的距離將在地圖上提供較少的圓圈,從而增加了在達到最大堆大小之前可以運行程序的時間。

您需要對其進行優化。 也許您在相同的坐標處繪制圓。 繪制的每個圓圈都是一個內存分配,因此請嘗試查看是否在相同的位置調用過onLocationChanged有時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM