2017-12-16 11 views
0

내 모든 네트워크 관련 코드에 Volley를 사용하고 있습니다. Volley가 메인 UI 스레드에서 실제 네트워킹 부분을 다루기 때문에 나는 그것에 대해 많이 생각하지는 않았지만, 몇 가지 예에서 응답 데이터의 중요한 처리를 onResponse()에서 수행한다는 것을 알게되었습니다. 이 코드는 실제로 주 스레드에서 실행되는 것처럼 보입니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 코드의 특정 부분에 대해 AsyncTask를 정의해야합니까? 아니면 Volley의 스레딩 메커니즘에도 불구하고 전체 네트워크 요청을 AsyncTask에 넣어야합니까?Volley onResponse()를 백그라운드 스레드에서 처리해야합니까?

답변

0

활동이 파괴되거나 재현되는 경우 자체 단점이 있으므로 AsyncTask를 사용하지 않는 것이 좋습니다. 또한 Volley의 큐 메커니즘을 사용하는 경우 추가 기능으로 작동합니다.

내가 생각할 수있는 한 가지 해결책은 로더를 사용하는 것입니다. 네트워크를 호출하고 loadInBackground 방법으로 응답을 처리하십시오. 그리고 onLoadFinished가 호출되면 처리 된 응답을 받게됩니다.

다른 솔루션 (권장하지 않으며 효율성이 떨어짐)은 서비스를 사용하는 것입니다. 서비스에서 네트워크 호출을하고 데이터를 처리하고 활동으로 다시 통신 할 수 있습니다.

+0

왜 AsyncTask가 좋지 않을까요? 어떤 활동에 어떻게 묶여 있습니까? – ardevd

+0

@ardevd http://blog.danlew.net/2014/06/21/the-hidden-pitfalls-of-asynctask/ – Deepak

+0

@ardevd를 참조하십시오. 문제를 해결할 수 있었습니까? – Deepak