Cronet을 사용하여 생성된 요청의 수명 주기 및 라이브러리에서 제공하는 콜백 메서드를 사용하여 이를 관리하는 방법을 알아봅니다.
수명 주기 개요
Cronet 라이브러리를 사용하여 만드는 네트워크 요청은 UrlRequest
클래스로 표시됩니다.
UrlRequest
수명 주기를 이해하려면 다음 개념을 알아야 합니다.
- 상태
- 상태란 특정 시간에 요청이 놓여 있는 특별한 조건을 말합니다. Cronet 라이브러리를 사용하여 생성된 UrlRequest 객체는 수명 주기의 여러 상태를 거칩니다. 요청 수명 주기에는 하나의 초기 상태와 여러 개의 전환 상태 및 최종 상태가 포함됩니다.
UrlRequest
메서드- 클라이언트는 상태에 따라
UrlRequest
객체에서 특정 메서드를 호출할 수 있습니다. 메서드는 한 상태에서 다른 상태로 요청을 이동합니다. Callback
메서드UrlRequest.Callback
클래스의 메서드를 구현하여 앱에서 요청 진행 상황에 관한 업데이트를 받을 수 있습니다. 수명 주기의 상태를 이전하는UrlRequest
객체의 메서드를 호출하기 위해 콜백 메서드를 구현할 수 있습니다.
다음 목록은 UrlRequest
수명 주기의 흐름을 보여줍니다.
- 앱에서
start()
메서드를 호출한 후 수명 주기는 Started 상태가 됩니다. - 서버는 리디렉션 응답을 전송할 수 있으며, 이 경우 흐름이
onRedirectReceived()
메서드로 전환됩니다. 이 메서드에서는 다음 클라이언트 작업 중 하나를 할 수 있습니다.followRedirect()
를 사용하여 리디렉션 따르기. 이 메서드는 요청을 Started 상태로 되돌립니다.cancel()
을 사용하여 요청 취소. 이 메서드는 요청을onCanceled()
메서드로 전환하며, 여기에서 앱은 요청이 Canceled 최종 상태로 전환되기 전에 추가 작업을 할 수 있습니다.
- 앱이 모든 리디렉션을 따라가면 서버가 응답 헤더를 전송하고
onResponseStarted()
메서드가 호출됩니다. 요청은 Waiting for read() 상태가 됩니다. 앱은read()
메서드를 호출하여 응답 본문의 일부를 읽으려고 시도합니다.read()
가 호출되면 요청은 Reading 상태가 되며, 여기에서 다음과 같은 결과가 발생할 수 있습니다.- 읽기 작업이 성공했지만 사용 가능한 데이터가 더 있습니다.
onReadCompleted()
가 호출되고 요청이 다시 Waiting for read() 상태가 됩니다. 응답 본문을 계속 읽으려면 앱은read()
메서드를 다시 호출해야 합니다. 앱이cancel()
메서드를 호출하여 요청 읽기를 중지할 수도 있습니다. - 읽기 작업이 성공했으며 사용 가능한 추가 데이터가 없습니다.
onSucceeded()
메서드가 호출되고 요청이 이제 Succeeded 최종 상태가 됩니다. - 읽기 작업이 실패했습니다.
onFailed
메서드가 호출되고 요청의 최종 상태가 이제 Failed가 됩니다.
- 읽기 작업이 성공했지만 사용 가능한 데이터가 더 있습니다.
다음 다이어그램은 UrlRequest
객체의 수명 주기를 보여줍니다.
Cronet 요청 수명 주기
범례 | |
---|---|
UrlRequest 메서드 |