刚刚接触arcgis android,在存储地图要素的时候出现bug,导致应用闪退。异常日志:
this = {RuntimeInit$UncaughtHandler@7229}
t = {Thread@3691} "Thread[main,5,main]"
e = {ArcGISRuntimeException@7230} "com.esri.arcgisruntime.ArcGISRuntimeException: Cannot call this method in this context"
mAdditionalMessage = "Can only call this method on a loaded table."
mCause = null
mCode = 15
mDomain = {ArcGISRuntimeException$ErrorDomain@7250} "ARCGIS_RUNTIME"
mErrorMessage = "Cannot call this method in this context"
cause = {ArcGISRuntimeException@7230} "com.esri.arcgisruntime.ArcGISRuntimeException: Cannot call this method in this context"
异常代码为:
private void save2ArcgisService() {
//保存路径到arcgis服务器
final ServiceFeatureTable serviceFeatureTable = new ServiceFeatureTable(featureUrl);
FeatureLayer featureLayer = new FeatureLayer(serviceFeatureTable);
map.getMap().getOperationalLayers().add(featureLayer);
polylinePoints.add(new Point(23.041117,113.810075));
addFeature( new Polyline(polylinePoints), serviceFeatureTable);
}
异常发生原因为ServiceFeatureTable加载完成之前调用地图要素存储方法。代码更正:
private void save2ArcgisService() {
//保存路径到arcgis服务器
final ServiceFeatureTable serviceFeatureTable = new ServiceFeatureTable(featureUrl);
FeatureLayer featureLayer = new FeatureLayer(serviceFeatureTable);
map.getMap().getOperationalLayers().add(featureLayer);
polylinePoints.add(new Point(23.041117,113.810075));
serviceFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE);
serviceFeatureTable.addLoadStatusChangedListener(new LoadStatusChangedListener() {
@Override
public void loadStatusChanged(LoadStatusChangedEvent loadStatusChangedEvent) {
if (loadStatusChangedEvent.getNewLoadStatus() == LoadStatus.LOADED) {
addFeature( new Polyline(polylinePoints), serviceFeatureTable);
}
}
});
}
异常解决。
感谢 https://blog.csdn.net/allenlu2008/article/details/71440288