Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

Cronet 요청 수명 주기

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

수명 주기 개요

Cronet 라이브러리를 사용하여 만드는 네트워크 요청은 UrlRequest 클래스로 표시됩니다. UrlRequest 수명 주기를 이해하려면 다음 개념을 알아야 합니다.

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

다음 목록은 UrlRequest 수명 주기의 흐름을 보여줍니다.

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

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

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

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