看到论坛上有个网友和我一样的问题:
The map or layer has been destroyed or recyled
Hello,
I have a problem when the app restores after the map activity has been destroyed by the system.
The system calles OnDestroy on it's own, which is fine, but then, when i open the app back, everything restores (the app calles OnCreate again) except for the mapView Object.
When i try to add layers to the mapView i get the following message:
"The map or layer has been destroyed or recyled"
Does anybody had the same problem?
Any clues how to fix this?
I have a problem when the app restores after the map activity has been destroyed by the system.
The system calles OnDestroy on it's own, which is fine, but then, when i open the app back, everything restores (the app calles OnCreate again) except for the mapView Object.
When i try to add layers to the mapView i get the following message:
"The map or layer has been destroyed or recyled"
Does anybody had the same problem?
Any clues how to fix this?
-------------------------------------------------------------------------------------------------------
我这边的详细问题是:
地图的Activity onDestroy()后,在重新打开app的时候就报 The map or layer has been destroyed or recycled.错误,然后地图能显示
但是数据丢了..
原来的destroy()
@Override
protected void onDestroy() {
featureLayers.clear();
mMapView.destroyDrawingCache();
try {
unregisterReceiver(receiver);
}
catch (Exception e){
e.printStackTrace();
}
try {
unregisterReceiver(receiver2);
}
catch (Exception e){
e.printStackTrace();
}
//结束服务,如果想让服务一直运行就注销此句
try {
stopService(new Intent(this, LocationService.class));
}
catch (Exception e){
e.printStackTrace();
}
super.onDestroy();
}
//初始化数据图层
private void initializeRoutingAndGeocoding() {
for(int i=0;i<allfloor;i++) {
Geodatabase geodatabase = null;
try {
geodatabase = new Geodatabase(geofilename[i]);
List<GeodatabaseFeatureTable> table = geodatabase.getGeodatabaseTables();
Log.i("zjx", "list:" + table);
GeodatabaseFeatureTable mytable;
if(i==1)mytable = geodatabase.getGeodatabaseFeatureTableByLayerId(0);
else mytable= geodatabase.getGeodatabaseFeatureTableByLayerId(1);
Log.i("zjx","mytable:"+mytable);
featureLayers.add(new FeatureLayer(mytable)); //问题出在这
// Attempt to load the local geocoding and routing data
mMapView.addLayer(featureLayers.get(i)); //之前的资源没有释放(list.clear()),get(i)并不是新增的
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
trygetDataName();
}
所以在onDestroy 里面加一下释放所有资源的函数,以前一直以为java会自己快速回收的= =
,
esri论坛sso不能登录,希望那个外国网友能看到这文章把~
版权声明:本文为博主原创文章,未经博主允许不得转载。