2014-11-25 1 views
0

일부 기기에서 내 Volley 요청 대기열이 내가 대기열에 추가 한 모든 네트워크 요청을 실행하지 않습니다. 나는 이것에 접근하는 두 가지 방법을 시도했다. 하나는 접근 방식이다.Android Volley 요청 큐가 모든 요청을 실행하지 않음

1) 후속 네트워크 요청이 이전 요청의 onResponse 메서드에서 호출 된 재귀 적 메서드.

이 재귀를 시작하는 서비스는 시스템에서 완료되기 전에 종료되지만 일부 장치에서는 발리 요청 큐가이 방법을 끝낼 수 있습니다. 다른 장치에서는 하나의 네트워크 요청 만 이루어지며 이후 요청은 수행되지 않습니다.

2) for 루프 중 하나가 요청하기 전에 모든 요청 객체가 요청 대기열에 추가되는 for 루프.

일부 장치에서는 요청 대기열이 계속 작동하는 것처럼 보이며 다른 장치에서는 히트 또는 미스가 발생합니다.

는 내 요청 대기열을 유지하기 위해 싱글 톤을 사용하므로,이,가 파괴 당신이 IntentService을 사용하는 경우 통찰력이

답변

2

감사

시스템에 의해 파괴되는 IntentService 함께 할 아무것도하지합니다 handleIntent 메서드가 반환 되 자마자 현재 활동이 실행되고 있지 않으면 앱이 종료되고 싱글 톤은 사라집니다.

발리는 비동기를 처리하기 때문에 IntentService은 필요하지 않습니다.

답장으로 START_STICKY의 표준 서비스를 사용하고 요청을 완료하면 stopSelf을 잊지 마세요.

+0

음, 실제로 문제가 계속 발생합니다. 내 Volley 스레드는 onStartCommend가 반환되기 전에 시작하고 반환하면 단일 스레드를 죽일 수 있습니다. 그러나 이것은 아직도 실행중인 활동입니다. – CQM

+0

이것은 이상합니다. 얼마나 시간이 걸려요? – njzk2

+0

14-40 부분으로 분할 된 바이트가있는 멀티 파트 업로드입니다. 나는 구글이 볼리가 "큰"페이로드를 다루는 것에 대해 말한 바를 알고 있지만, 이것은 멀티 파트 업로드를 다루기위한 고도로 수정 된 발리이다. 기본적으로 바이트 덩어리는 개별 요청 (MultipartRequest 유형)에 추가되며 이러한 요청은 일반 요청처럼 요청 대기열에 추가됩니다. Volley가 업로드하고 서버가 좋아하지만 일부 기기에서는 requestQueue 싱글 톤이 죽거나 무언가가 삭제되는 경우가 있습니다. 다른 장치는 전체 업로드 대기열을 따라 곧바로 이동합니다. – CQM