2014-09-16 4 views
1

요청이 활동에있어 취소가 필요한지 알고 싶습니다. 따라서 Request.isCanceled()을 사용하여 onResponse() 방법을 확인했지만 false를 반환합니다. 나는 요청이 정말로 취소 된 때를 알지 못한다. 나는 코드를 읽었다. 아직 대답이 없다.발리 요청이 취소되었을 때

+0

'모든 요청이 취소 된 후 로딩 대화 상자를 숨기려면 요청이 취소되었는지 확인해야합니다. '요청을 취소하지 않으면 취소되지 않습니다. – mmlooloo

답변

7

코드가 ALL을 나타냅니다.

정말 타이밍에 따라 다릅니다. . - 요청이 CacheDispatcher에 의해 삭제됩니다

  1. cancel() 캐시 검사하기 전에 호출됩니다 request.cancel() 일단

    가 호출되는 요청이 취소 판정을 받았습니다과 모두가 어떤 상태에 따라 4 개 가지 옵션이 있습니다 그 run 루프 (94)에

  2. cancel() 캐시 확인한 후 캐시 된 응답이없는 요청, 호출되지만 요청이 실제로 실행 전에 - 요구가의해 폐기은 루프 run (줄 102)에 있습니다.

  3. cancel()는 요청이 전송 된 후 호출하지만, 반응 전에 도착한다 - 청취자 알리지 않습니다 도착 (라인 92) 및 때의 응답을 폐기 ExecutorDelivery. 즉, onResponse 또는 onError이 호출 될 때 요청이 취소되지 않았으며 요청한 것처럼 요청이 항상 false를 반환합니다.

  4. cancel() - 배송 후 아무 것도 나타나지 않습니다. 너무 늦었습니다.

내가 요청을 취소하고, 왜이 확인된다, 그러나 희망이 당신을 도울 수있는 충분한 정보가 정확히 당신의 상황을 이해하지 못했다.

+0

heping 주셔서 감사합니다. 사실 나는 Activity에 동일한 태그가있는 serveral Request를 가지고 있으며 요청이 실행되기 전에 로딩 대화 상자를 표시합니다. 이제 요청이 취소 된 후 로딩 대화 상자를 숨기려고합니다. 요청이 취소되었는지 확인해야합니다. 하지만 귀하의 대답으로, 나는 "onResponse()"방법을 확인할 수 없습니다. 다른 방법을 시도하거나 어떤 의견을 내줄 수 있습니까? – naiyu

+0

3 번 문제에 대한 해결 방법이 있습니까? 제 질문을 참조하십시오 : http://stackoverflow.com/questions/34577601/how-do-you-cancel-a-volley-request-that-has-already-started –

관련 문제