2013-07-22 2 views
0

사용자가 자신의 위치를 ​​웹 서버에 기록 할 수있게 해주는 앱을 만들려고하고 있는데, 나는이 모든 흐름에 몰두하고 있습니다. 일부 스레드를 사용하고 있지만이 시점에서이를 가장 잘 사용하는 방법은 혼란 스럽습니다. 메인 스레드 (1)에는 UI가 있으며 사용자가 위치를 기록하기 위해 버튼을 친 다음 해당 버튼을 누르면 UI 스레드가 "기다려주십시오"대화 상자를 표시하고 새 스레드 (2)를 시작하여 GPS 위치. 지금 알다시피 : UI 스레드가 이제 대화 상자를 보여 주며 스레드 (2)가 위치를 가져 오는 중입니다. 다음으로 thread (2)가 위치를 얻었을 때, 나는 http 서버와 통신하기 위해 다른 스레드 (3)가 필요하다. 메인 스레드 (1)는 다른 스레드에서 설정할 플래그를 정기적으로 확인하기 위해 "sleep()"을 처리 할 수 ​​없습니다. "기다려주십시오"대화 상자를 닫을 수있는 유일한 방법은 스레드 중 하나입니다. 너희들이 볼 수 있듯이 나는 조금 혼란 스럽다. 이 문제를 해결하는 가장 좋은 방법은 무엇입니까? (엄격히 말해서 스레드 동기화에 대해)? 기본적으로 사용자 인터페이스가 필요합니다. 잠시 기다려주십시오. 백그라운드에서 앱이 1 차 GPS 좌표를 받고 2 차 위치 정보를 웹 서버에 로깅 한 후 대기합니다. 그리고 마침내 성공 여부를 사용자에게 보여줍니다. 감사합니다.스레드와 UserInterface 상호 작용

+2

[AsyncTask] (http://developer.android.com/reference/android/os/AsyncTask.html)에 안녕하십니까! – Vikram

답변

1

AsyncTask @vikram이 (가) 댓글을 달았습니다. Activity.runOnUiThread()이 또 다른 옵션입니다. View.post()은 또 다른 것입니다.