2012-02-09 3 views
5

나는 원격 서버에 접속하여 제공된 데이터를 표시하는 것이 주요 책임 인 애플리케이션에서 작업하고 있습니다.Android에서 동기 서비스 호출

서비스는 비누 기반입니다. 이를 위해 ksoap 라이브러리를 사용합니다.

저는 비동기 작업을 사용하여 "전화 서비스"를 해왔습니다. 모든 것이 잘되는 것처럼 보였지만 ...

서비스는 순차적이며, 내 요청을 '잃어 버리는 경향이 있으므로 올바른 결과를 얻지 못합니다.

는 그래서 문제를 해결하기 위해 동기 접근 방식을 취하기로 결정,하지만 난이 이런 식으로 등 추가로드 버튼/바

성능은 이런 식으로 끔찍한를 제공 할 수 있습니다. 그런 경우를 처리하는 가장 좋은 방법은 무엇입니까? 어떤 종류의 동기화를 사용할 수 있습니까? 요청간에 어떤 경쟁도 없을 것입니다.

어떻게 Android 서비스를 이용할 수 있습니까? 어떻게 더 좋습니까?

미리 답변 해 주셔서 감사합니다.

+0

왜 당신이 순차적으로 AsyncTasks을 실행하지 않는 docs page를 참조하십시오, 그들은 성공적인 경우에만? – dmon

+0

순차적으로 전화하면 정확히 무슨 뜻입니까? – Olek

답변

15

당신은 실제로 동기화 방법으로 AsyncTask를 호출 할 수

class MyTask extends AsyncTask<Void,Void,String> 
{...} 

MyTask x = new MyTask(); 
String result = x.execute().get(); 

AsyncTask

+1

빠른 응답을 보내 주셔서 감사합니다. 너 혼자 해봤 니? 그래서() 나는 그것을 실행 스레드에 join()을 호출한다고 생각한다. get()이 UI 또는 다른 작업을 일시 중단하지 않습니까? 작업 대기열을 제어하는 ​​메커니즘이 내장되어 있습니까? – Olek

+0

나는 주로 "동기화"부분에 응답했다고 생각합니다. 응답을받을 때까지 UI를 차단하고 싶다는 것을 이해했습니다. 적어도 onPreExecute와 onPostExecute를 사용하면 안전하게 진행 막대를 시작할 수 있습니다. –

+0

사실 저는 UI를 고정시키고 싶지 않습니다. 그리고 나는 이것을 피할 방법을 찾고 있습니다. 나는 대부분의 작업을 동기화하는 방법을 찾고있다. – Olek