2014-02-06 7 views
0

Volley의 모든 요청이 "주 스레드"를 차단하지 않고 다른 스레드에서 비동기 적으로 실행되기 때문에 요청이 완료 될 때까지 기다린 후 주 스레드 실행을 계속할 수 있습니까?비동기 발리 HTTP 요청

+0

'요청이 완료 될 때까지 기다렸다가 주 스레드 실행을 계속 하시겠습니까? '라고 말하면 메인 스레드를 차단하겠습니까? 그건 추천 안돼, 안돼. (전체 요점은, btw.) – njzk2

+0

실제로 요청 후 즉시 응답을 처리해야합니다, 그렇지 않으면 널 포인터 예외가 발생하거나 주 스레드가 응답을 받았는지 확인하고 계속할 수 있습니다. – Sameed

+0

no. 요청 완료에 의존하지 않아야하며 요청이 완료되면 요청을 시작할 때 전달하는 리스너에서만 수행해야합니다. – njzk2

답변

0

항상 메인 스레드를 라이브 상태로 유지하도록 앱을 디자인해야합니다. 리스너 또는 비동기 작업을 사용하여 응답을 받으면 코드 블록을 실행할 수 있습니다. 청취자 here을 사용하여 내 대답을 확인하십시오. 또는 onPostExecute AsyncTask를보십시오.

0

요청이 완료 될 때까지 기다렸다가 계속 진행하면 메인 스레드가 실행됩니까?

대안은 발리가 작동하는 동안로드 대화 상자를 표시하는 것입니다. 이렇게하면 요청이 완료 될 때까지 사용자가 앱과 상호 작용하지 못하게 할 수 있습니다 (취소 할 수있는 기회를 제공하는 것을 잊지 마세요).

발리는 기본 스레드와 병렬로 작동하고 요청이 완료되면 알려줍니다 (모든 앱에서 수행해야하는 작업). 원하지 않으면 발리 (Volley)를 사용하지 마십시오. 하지만 NetworkOnMainThreadException과 if you manage to bypass it이 발생하면 ANR 예외가 발생합니다.