我目前正在使用 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还是异步任务?