버그 사항 : 기존의 onCameraIdlelistner 를 clustermanger 가 받는 방식의 구현으로, 마커 위치 데이터를 다 받았는데도 표출하지 못함.
수정 : 데이터 파싱이 끝나고 clustermanager에 데이터 삽입이 완료되면 zoom out을 통해 clustermanager에 신호를 주는 방식으로 개선
기존 마커 클러스터링 설명 :
2020/01/15 - [개발] - [안드로이드] 구글맵 + 마커 클러스터링 + 커스텀 마커 + 마커 클릭 이벤트 구현
public class SeoulbikeApi extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
}
@Override
protected String doInBackground(String... strings) {
Log.d("Task3", "POST");
String temp = "Not Gained";
try {
temp = GET("");
Log.d("REST", temp);
return temp;
} catch (IOException | ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
}
return temp;
}
}
대에충 요런식이었습니다.
AsyncTask를 통해 쓰레드를 돌려서 여기서 공공데이터인 따릉이 데이터를 파싱하는 것이었죠.
근데 AsyncTask는 메인쓰레드(UI쓰레드) 가 아니기 때문에 메인쓰레드에서 일어날 법한 작업이 그냥은 불가능합니다.
하지만 위의 OnPostExecute에서는 가능합니다. 일반적으로 작업은( 여기선 데이터파싱) doInBackground에서 작업을 하고 작업이 완료되면 OnPostExecute 가 호출됩니다.
간략히 설명하자만 OnpreExecute() -> doInBackground -> OnPostExecute() 이런 식이죠. 다만 doInBackground 의 작업 틈틈히 메인쓰레드 역할을 할 수 있는 onProgressUpdate() 가 있습니다. 이 힘수는 doInBackground 안에서 publishProgress()를 호출함으로써 UI 스레드상에서 실행됩니다
'개발 > 안드로이드' 카테고리의 다른 글
[안드로이드] findViewById를 없애는 갓기능 : viewbinding (0) | 2020.03.11 |
---|---|
[안드로이드] 구글맵 커스텀 마커를 하는 2가지 방법 (0) | 2020.03.07 |
[안드로이드] 구글맵 + 마커 클러스터링 + 커스텀 마커 + 마커 클릭 이벤트 구현 (2) | 2020.01.15 |
[안드로이드]recycleview item의 특정 텍스트 색상 변경 (0) | 2019.10.15 |
[안드로이드] 현재 위치(좌표) 구하기 | 버그리포트 (0) | 2019.10.10 |
댓글