gpt4 book ai didi

Android googlemap 内存不足

转载 作者:行者123 更新时间:2023-11-29 00:50:46 25 4
gpt4 key购买 nike

我用 googlemap api 制作了一个 android 应用程序,并在叠加层上绘制了一些 16x16 png(大约 200 个)。当我移动或放大/放大 map View 时,经常出现“内存不足”错误。

我还在我的 htc 本身中使用了 googlemap 应用程序。它使用大约 14+MB 的内存,并且永远不会发生“内存不足”的情况。

如何在 googlemap api 中节省内存使用量,或者如何扩大 android api 内存限制。

非常感谢!

最佳答案

我自己的解决方案:放大/缩小时捕获 OutOfMemoryError,将防止 api 被 VM 杀死。因为它通常在翻译后进行 map 缩放时死掉。

    mapView.setBuiltInZoomControls(true);  
ZoomButtonsController zoomctrl = mapView.getZoomButtonsController();
zoomctrl.setAutoDismissed(false);//自动隐藏关闭
zoomctrl.setVisible(true);
zoomctrl.setOnZoomListener(new ZoomButtonsController.OnZoomListener() {

public void onZoom(boolean zoomIn) {
// TODO Auto-generated method stub
try{
Log.i(TAG, "OnZoomListener");
System.gc();
if(zoomIn)
{
mc.zoomIn();
}
else
{
mc.zoomOut();
}
System.gc();
}
catch(OutOfMemoryError e)
{
e.printStackTrace();
Log.e(TAG, e.toString());
Toast.makeText(GoogleMap.this, e.toString(), Toast.LENGTH_LONG);
}
catch (Exception e)
{
Log.w(TAG, e.toString());
Toast.makeText(GoogleMap.this, e.toString(), Toast.LENGTH_LONG);
}
}

public void onVisibilityChanged(boolean visible) {
// TODO Auto-generated method stub

}
});

private boolean myDoubleTouch(float x, float y, MapView mapView)
{
Log.i(mParent.TAG, "myDoubleTouch: " + x +","+y);
try
{
mapView.getController().zoomInFixing((int)x, (int)y);
}
catch(OutOfMemoryError e)
{
System.gc();
e.printStackTrace();
Log.e(mParent.TAG, e.toString());
Toast.makeText(m_mapview.getContext(), e.toString(), Toast.LENGTH_LONG);
}
catch (Exception e)
{
Log.w(mParent.TAG, e.toString());
Toast.makeText(m_mapview.getContext(), e.toString(), Toast.LENGTH_LONG);
}

return true;
}

关于Android googlemap 内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2846374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com