Cronet 요청 수명 주기

Cronet을 사용하여 생성된 요청의 수명 주기와 라이브러리에서 제공하는 콜백 메서드를 사용하여 요청을 관리하는 방법을 알아봅니다.

수명 주기 개요

Cronet 라이브러리를 사용하여 생성된 네트워크 요청은 UrlRequest 클래스로 표시됩니다. 다음 개념은 UrlRequest 수명 주기를 이해하는 데 중요합니다.

상태
상태란 특정 시간에 요청이 놓여 있는 특별한 조건을 말합니다. Cronet 라이브러리를 사용하여 생성된 UrlRequest 객체는 수명 주기의 여러 상태를 거칩니다. 요청 수명 주기에는 초기 상태와 여러 전환 및 최종 상태가 포함됩니다.
UrlRequest 메서드
클라이언트는 상태에 따라 UrlRequest 객체의 특정 메서드를 호출할 수 있습니다. 메서드는 한 상태에서 다른 상태로 요청을 이동합니다.
Callback 메서드
UrlRequest.Callback 클래스의 메서드를 구현하면 앱에서 요청 진행 상황에 관한 업데이트를 수신할 수 있습니다. 콜백 메서드를 구현하여 수명 주기를 한 상태에서 다른 상태로 전환하는 UrlRequest 객체의 메서드를 호출할 수 있습니다.

다음 목록은 UrlRequest 수명 주기의 흐름을 설명합니다.

  1. 앱에서 start() 메서드를 호출한 후 수명 주기는 Started(시작됨) 상태입니다.
  2. 서버는 리디렉션 응답을 보낼 수 있으며, 이 응답은 onRedirectReceived() 메서드로 이동합니다. 이 메서드에서는 다음 클라이언트 작업 중 하나를 수행할 수 있습니다.
    • followRedirect()를 사용하여 리디렉션을 따릅니다. 이 메서드는 요청을 Started 상태로 되돌립니다.
    • cancel()을 사용하여 요청 취소. 이 메서드는 요청이 취소됨 최종 상태로 전환되기 전에 앱에서 추가 작업을 실행할 수 있는 onCanceled() 메서드로 요청을 가져옵니다.
  3. 앱이 모든 리디렉션을 따른 후에는 서버가 응답 헤더를 전송하고 onResponseStarted() 메서드가 호출됩니다. 요청은 Waiting for read() 상태가 됩니다. 앱은 read() 메서드를 호출하여 응답 본문의 일부를 읽어야 합니다. read()가 호출된 후에는 요청이 읽기 상태가 되며, 다음과 같은 결과가 발생할 수 있습니다.
    • 읽기 작업이 성공했지만 사용 가능한 데이터가 더 있습니다. onReadCompleted()가 호출되고 요청이 다시 Waiting for read() 상태가 됩니다. 응답 본문을 계속 읽으려면 앱이 read() 메서드를 다시 호출해야 합니다. 앱에서 cancel() 메서드를 사용하여 요청 읽기를 중지할 수도 있습니다 .
    • 읽기 작업이 성공했으며 사용 가능한 추가 데이터가 없습니다. onSucceeded() 메서드가 호출되고 요청이 이제 성공 최종 상태가 됩니다.
    • 읽기 작업이 실패했습니다. onFailed 메서드가 호출되고 요청의 최종 상태가 이제 Failed가 됩니다.

다음 다이어그램은 UrlRequest 객체의 수명 주기를 보여줍니다.

Cronet 요청 수명 주기 다이어그램
Cronet 요청 수명 주기

범례
Cronet 초기 상태 범례 아이콘 초기 상태 Cronet 최종 상태 범례 아이콘 최종 상태
Cronet 전환 상태 범례 아이콘 전환 상태 Cronet 콜백 메서드 범례 아이콘 콜백 메서드
Cronet 클라이언트 작업 범례 아이콘 UrlRequest 메서드