剛剛接觸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