android: MapView加载多个 overlay 内存溢出

本文介绍了一种解决地图应用程序中因加载多个overlay导致内存溢出的问题。通过捕获异常并适时调用垃圾回收机制来避免内存溢出错误,同时提供了具体的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下文转自:

http://wang-peng1.iteye.com/blog/668166

------------------------------------------------------------------------------------------------------------------------------

今天测试了一下地图加载多个不同overlay,结果溢出 其实也不大16*16 总过18个

结果内存移除"out of memory".搜索了一下 有个人也遇到过 他的解决办法就是 捕获溢出的异常

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 ;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值