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