最初に15秒で地図を更新するには、次のようにタイマーでAsynchTaskを呼び出します。
public void AsynchTaskTimer() {
final Handler handler = new Handler();
Timer timer = new Timer();
TimerTask timer = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
try {
new YourAsynchTask().execute();
} catch (Exception e) {
// TODO Auto-generated catch block
}
}
});
}
};
timer.schedule(timer, 0, 15000); //execute in every 15sec
}
呼び出しAsynchTaskTimer()
ますonCreate()
。でキャンセルtimer
しonDestroy()
ます。
ここで、のYourAsynchTask()
webserviceを呼び出して、webservicedoInBackground
からマーカーデータを取得し、マーカーオブジェクトのArrayListに入力し、マーカーを表示するメソッドにマーカーオブジェクトのArrayListを渡します。このような
private class YourAsynchTask extends AsyncTask<String, Void, Integer> {
ArrayList<MarkerObject> markerArrList= new ArrayList<MarkerObject>();
markerArrList.clear();
@Override
protected void onPreExecute() {
progressDialog = ProgressDialog.show(YourMapFragActivity.this, "Wait...",
"Loading");
progressDialog.setMessage("Please Wait");
progressDialog.show();
super.onPreExecute();
}
@Override
protected Integer doInBackground(String... params) {
markerArrList=getMapMarkerDataFromWebservice();
return 1;
}
@Override
protected void onPostExecute(Integer result) {
super.onPostExecute(result);
showMarkerLocationOnMap(markerArrList);
if (progressDialog.isShowing()) {
progressDialog.dismiss();
}
}
}
showMarkerLocationOnMap
から1つずつマーカーデータを取得してmarkerArrList
表示しますmap
これがお役に立てば幸いです。