OSMdroid mapview降低了Android应用程序的性能

时间:2014-03-21 09:43:53

标签: android performance android-asynctask osmdroid

我目前正在使用 OSMdroid 进行离线地图渲染。虽然在osmdroid中对于离线地图时偶尔会出现一些问题,但我很好。但是在我的Android应用程序中,我看到当我通过放大和缩小多次来测试我的地图时,我的应用程序会逐渐缓慢地响应。我不确定究竟是什么问题。这是 OSMdroid 或我的应用程序的问题,我无法找到。

我有一个加载mapoffline活动的片段类。

public class MapActivityFragment extends Fragment{

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,

            Bundle savedInstanceState) {

         View rootView = inflater.inflate(R.layout.map_view, container, false);
        /*Create my offline MapView*/
        oMapViewOffline     = new MapViewOffline(mapView);
        oMapViewOffline.run();
        return rootView;

    }

在我的 MapViewOffline.java

public void run(){

        /*Get custom Tile data*/
        MapTilerCustomDataSource myNewXYTileSource = new MapTilerCustomDataSource();
        myNewXYTileSource.isSourceTMS = true;
        mMapViewOSM.setTileSource(myNewXYTileSource);
        mMapViewOSM.setUseDataConnection(false);
    }

我的MapTilerCustomDataSource基于:OSMdroid : How to load offline map from zip archive - MapTileFileArchiveProvider

最重要的不仅仅是加载我的离线地图,我还运行着昂贵的 AsyncTask

它的作用是从服务器读取数据并在mapview上相应地绘制标记。这再次降低了我的表现。

@Override
protected Void doInBackground(Void... arg0) {
      while(true){
          Shadow = new CustomOverlay(getApplicationContext());
          Shadow.getData();
          try {
        Thread.sleep(1000);
          } catch (InterruptedException e) {
        e.printStackTrace();
        }
        publishProgress();
        mCount++;
     }
}

@Override
protected void onProgressUpdate(Void... progress){
     Shadow.runDrawing();
     listOfSensorOverlays.add(Shadow);
     mapView.invalidate();
}

如何让我的Android应用程序表现更好?导致性能下降的原因可能是什么;是osmdroid还是异步任务

0 个答案:

没有答案