기존의 프로그램은 파일 로드(메뉴에서 선택)-> 분석(kmltest메쏘드) -> 화면에 포인트, 라인, 폴리곤 뿌려주는 방식(init(() -> addMarker()등등)으로 그려졌습니다.
여기서 지금은 3단계가 메인 쓰레드 하나로 돌아가서
파일 로드 시부터 다 뿌릴때까지 그대로 멈추거든요...
그래서 파일을 선택할 때(메뉴에서 선택시에), 메인쓰레드에서는 프로그레스바를 돌리고
추가 쓰레드를 하나 만들어서 거기서 분석하는 메쏘드(kmltest)를 호출하고,
분석하는 메쏘드안에서 point, line, polygon 을 뽑아서 init() -> addMarker(), addPolyLine(), addPolygon() -> 핸들러에서 뿌려주는 작업
이렇게 진행됩니다.
kmltest 메쏘드 마지막에 프로그레스바를 닫아 주구요.
이렇게 변환을 했는데..
문제는 핸들러에서 addPolygon 으로 뿌려주면 에러가 납니다..(아직 addMarker 나 addPolyLine은 하지 않았음. 주석으로 막아놓음)
addPolygon 부분만 주석처리 하면 처리가 잘 되구요. 프로그레스 바도 잘 돕니다.
핸들러로 값이 잘 들어오는지 찍어 봐도 잘 들어옵니다.
뿌려주는 부분은 원래 잘 되던 소스를 그대로 가져와서 변수이름만 조금 수정했구요.
뭐가 문제인지 모르겠네요 에구구.. 아침부터 계속 수정수정 하다가 기존 소스도 날릴뻔했네요 ㅠㅠ
03-11 15:26:50.348: W/dalvikvm(23773): threadid=22: thread exiting with uncaught exception (group=0x40d5b1f8)
03-11 15:26:50.348: E/AndroidRuntime(23773): FATAL EXCEPTION: Thread-1927
03-11 15:26:50.348: E/AndroidRuntime(23773): java.lang.IllegalStateException: Not on the main thread
03-11 15:26:50.348: E/AndroidRuntime(23773): at maps.ap.q.b(Unknown Source)
03-11 15:26:50.348: E/AndroidRuntime(23773): at maps.au.e.b(Unknown Source)
03-11 15:26:50.348: E/AndroidRuntime(23773): at maps.z.ag.addPolygon(Unknown Source)
03-11 15:26:50.348: E/AndroidRuntime(23773): at com.google.android.gms.maps.internal.IGoogleMapDelegate$Stub.onTransact(IGoogleMapDelegate.java:152)
03-11 15:26:50.348: E/AndroidRuntime(23773): at android.os.Binder.transact(Binder.java:297)
03-11 15:26:50.348: E/AndroidRuntime(23773): at com.google.android.gms.maps.internal.IGoogleMapDelegate$a$a.addPolygon(Unknown Source)
03-11 15:26:50.348: E/AndroidRuntime(23773): at com.google.android.gms.maps.GoogleMap.addPolygon(Unknown Source)
03-11 15:26:50.348: E/AndroidRuntime(23773): at com.exam.v2test.MainActivity$1.handleMessage(MainActivity.java:566)
03-11 15:26:50.348: E/AndroidRuntime(23773): at com.exam.v2test.MainActivity.addPolygon(MainActivity.java:232)
03-11 15:26:50.348: E/AndroidRuntime(23773): at com.exam.v2test.MainActivity.init(MainActivity.java:131)
03-11 15:26:50.348: E/AndroidRuntime(23773): at com.exam.v2test.MainActivity.separate_list(MainActivity.java:475)
03-11 15:26:50.348: E/AndroidRuntime(23773): at com.exam.v2test.MainActivity.kmltest(MainActivity.java:444)
03-11 15:26:50.348: E/AndroidRuntime(23773): at com.exam.v2test.MainActivity$myThread.run(MainActivity.java:496)
이게 에러 메시지인데.. 왜 addPolygon 이 핸들러에서 호출이 안되는지 모르겠어요 ㅠㅠ