Android 谷歌地图滚动速度慢,手机应用程序在尝试显示50标记时显示ANR
嗨,我试图在谷歌地图上显示100个标记,但当我们在地图上渲染标记时。谷歌地图滚动停止和应用程序显示ANR。 下面是我在地图上显示标记的代码。 此外,API使用服务每隔5秒调用一次 请告诉我我们做错了什么Android 谷歌地图滚动速度慢,手机应用程序在尝试显示50标记时显示ANR,android,google-maps,service,timer,google-maps-markers,Android,Google Maps,Service,Timer,Google Maps Markers,嗨,我试图在谷歌地图上显示100个标记,但当我们在地图上渲染标记时。谷歌地图滚动停止和应用程序显示ANR。 下面是我在地图上显示标记的代码。 此外,API使用服务每隔5秒调用一次 请告诉我我们做错了什么 if (getWorkerSummaryListResponse.getErrorCode() == 0) { workerListList = getWorkerSummaryListResponse.getWorkerListList();
if (getWorkerSummaryListResponse.getErrorCode() == 0) {
workerListList = getWorkerSummaryListResponse.getWorkerListList();
Log.d(TAG, "setData: " + workerListList.toString());
for (user.WorkerSummary workerBasicInfo : workerListList) {
userPosition = workerBasicInfo.getUserPosition();
workerAlarmStatus.get(workerBasicInfo.getUserAlarmStatus());
if (workerBasicInfo.getWorkerActiveStatus() == 1) {
if (!userPosition.toString().equalsIgnoreCase("")) {
if (!mOnlineWorkerList.contains(workerBasicInfo)) {
mOnlineWorkerList.add(workerBasicInfo);
}
userPosition.getGpsData().getLat();
userPosition.getGpsData().getLng();
markerOptions = new MarkerOptions();
markerOptions.icon(icon);
markerOptions.position(new LatLng(userPosition.getGpsData().getLat(), userPosition.getGpsData().getLng()));
markerOptions.title(workerBasicInfo.getWorkerInfo().getEmail());
// mMap.animateCamera(CameraUpdateFactory.newLatLng(new LatLng(userPosition.getGpsData().getLat(), userPosition.getGpsData().getLng())));
// mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(userPosition.getGpsData().getLat(), userPosition.getGpsData().getLng()), 12.0f));//where 14.0 is the zoom level
marker = mMap.addMarker(markerOptions);
marker.setTag(workerBasicInfo);
}
}
}
服务代码:---
公共类MyService扩展服务{
public static final int notify = 20000; //interval between two services(Here Service run every 5 seconds)
int count = 0; //number of times service is display
private Handler mHandler = new Handler(); //run on another Thread to avoid crash
private Timer mTimer = null; //timer handling
AuthorizeApp mAuthorizeApp;
@Override
public IBinder onBind(Intent intent) {
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public void onCreate() {
mAuthorizeApp = AppManager.shareInstance(this).getAuthorizeApp();
if (mTimer != null) // Cancel if already existed
mTimer.cancel();
else
mTimer = new Timer(); //recreate new
mTimer.scheduleAtFixedRate(new TimeDisplay(), 0, notify); //Schedule task
}
@Override
public void onDestroy() {
super.onDestroy();
mTimer.cancel(); //For Cancel Timer
Toast.makeText(this, "Service is Destroyed", Toast.LENGTH_SHORT).show();
}
//class TimeDisplay for handling task
class TimeDisplay extends TimerTask {
@Override
public void run() {
// run on another thread
mHandler.post(new Runnable() {
@Override
public void run() {
// display toast
mAuthorizeApp.getRealTimeInstrumentInfo(new GetInstrumentListTask(getApplicationContext()));
}
});
}
}