AnsweredAssumed Answered

Performance Issues on Esri Android SDK

Question asked by salihyalcin89 on Jun 20, 2015
Latest reply on Jun 26, 2015 by doneill-esristaff

Hello everyone,

 

We're developing Esri Android SDK and Esri iOS SDK based apps. Using some functionality and using some code blocks. But at the Esri Android SDK based side, app is working slowly. We use same internet connection, same ArcGIS server and same approach to develop mobile app. But android app works like disappointment.

 

In order to show you this issue we created new project. It contains 1 basemap (ArcGISTiledMapServiceLayer) and 2 button and 1 layer, when we click the button one app is adding layer when we click button 2 app removelayer,  when considering  even this simple app iOS side work faster 2 or 3 times than android.

 

I'll give simple code blocks.

 

Android side ;

public class MapMainFragment extends Fragment {
private static MapView mMapView = null;
public ArcGISDynamicMapServiceLayer mDynamicLayer;
Button mButtonAdd, mButtonRemove;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
  Bundle savedInstanceState) {
      final View rootView = inflater.inflate(R.layout.fragment_main_map, container, false); 
      mMapView = (MapView) rootView.findViewById(R.id.map);
      mButtonAdd = (Button) rootview.findViewById(R.id.buttonadd);
      mButtonDelete = (Button) rootview.findViewById(R.id.buttonremove;
      mMapView.addLayer(new ArcGISTiledMapServiceLayer(getString(R.string.citymap_url)), 0);
      mDynamicLayer = new ArcGISDynamicMapServiceLayer(getString(R.string.layer_url));  
      mButtonAdd.setOnClickListener(new View.OnClickListener() {
                 @Override
                        public void onClick(View v) {
                         mMapView.addLayer(mDynamicLayer);
                  });

    mButtonAdd.setOnClickListener(new View.OnClickListener() {
               @Override
                      public void onClick(View v) {
                          mMapView.removeLayer(mDynamicLayer);

              });
}

 

iOS Side;

MainViewController.h

@property (strong, nonatomic) IBOutlet AGSMapView *mapView; 

- (IBAction)btnZoomAdd:(id)sender;
- (IBAction)btnZoomRemove:(id)sender;

 

MainViewController.m

@interface MainViewController (){
  AGSTiledMapServiceLayer *baseTiledLayer;
  AGSDynamicMapServiceLayer *dynamicLayer}
  baseTiledLayer = [AGSTiledMapServiceLayer tiledMapServiceLayerWithURL:baseurl];   
[self.mapView insertMapLayer:baseTiledLayer withName:@"City Map" atIndex:0]; activeBaseLayer =@"City Map";
 dynamicLayer = [AGSDynamicMapServiceLayer dynamicMapServiceLayerWithURL: urldynamic];

- (IBAction)btnZoomIn:(id)sender {
       [self.mapView addMapLayer:dynamicLayer withName:Name];
}

- (IBAction)btnZoomOut:(id)sender {
     [self.mapView removeMapLayerWithName:Name];
}

As you see in code blocks nothing diffrent from each other but Android side works like a turtle, how Can I handle this situation ? How can I run my android app like a cheetah. I need advices. Thanks for all

 

Dan O'Neill,

Tero Rönkkö

Will Crick

Outcomes