Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OSMdroid mapview降低android应用程序性能_Android_Performance_Android Asynctask_Osmdroid - Fatal编程技术网

OSMdroid mapview降低android应用程序性能

OSMdroid mapview降低android应用程序性能,android,performance,android-asynctask,osmdroid,Android,Performance,Android Asynctask,Osmdroid,我目前正在使用OSMdroid进行脱机地图渲染。虽然osmdroid中的脱机地图时不时地加载平铺会出现一些问题,但我对此没有意见。但在我的android应用程序中,我发现当我通过多次放大和缩小来测试我的地图时,我的应用程序的响应速度会随着时间的推移逐渐变慢。我不确定到底是什么问题。这是不是OSMdroid或我的应用程序的问题,我无法找到答案 我有一个片段类,用于加载mapoffline活动 public class MapActivityFragment extends Fragment{

我目前正在使用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;

    }
在myMapViewOffline.java中

public void run(){

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

最大的问题不仅仅是加载我的离线地图,我还运行一个昂贵的异步任务

它所做的是从服务器读取数据,并在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还是异步任务?

您是否在其上运行了性能分析器,以查看运行哪些方法需要很长时间。看,我确实在我的应用程序上使用DDMS运行了traceview,尽管我不完全了解消耗情况。我注意到android/os/Handler.Messages消耗了43%,android/os/MessageQueue.Next消耗了28%,而osm maptileprovider消耗了15%。那么,我应该寻找什么呢?为了更清晰,我附上了一张图片。我还观察到了更多的事实。1) 当我放大/缩小太多时,osm maptileprovider消耗超过30%。2) 当我禁用异步任务时,我看到了一些更好的性能。放大和缩小将在缩放分幅时占用一些CPU周期,但这应该在一两秒钟后解决。你画了多少记号笔?您可能需要学习如何读取跟踪转储以了解发生了什么。我还建议您查看参考应用程序OpenStreetMapViewer,看看是否可以在那里复制它。@kurtzmarc这只是另一个澄清。哪一个能更快地读取离线地图贴…GEMF还是ZIP?