Cronet Request生命週期

瞭解Cronet創建的請求(Request)的生命週期,

學習如何使用回調函數(Callback)管理這些生命週期。

生命週期概述

Cronet庫創建的網絡請求使用UrlRequest類來描述。理解UrlRequest的生命週期的一些非常重要的概念如下:

  • 狀態(State): 狀態是請求在某一時間進入的特定條件。在生命週期中,Cronet庫創建的UrlRequest 對象在不同狀態之間切換。請求生命週期狀態包括:初始化狀態、多種過度狀態和終止狀態。
  • 行爲方法 UrlRequest methods: 客戶端請求在不同狀態可以調用不同的方法。這些方法可以將一個狀態切換到另一個狀態。
  • 回調函數 Callback methods:通過實現UrlRequest.Callback類的方法,你的APP可以與請求的進度保持一致,也可以通過實現這些回調函數調用請求的行爲方法,將一個狀態切換到另一個狀態。

下面列表描述了UrlRequest生命週期的流程:

  1. APP調用started()函數後,生命週期處於開始狀態(Started)。
  2. 服務端調用發送鏈接跳轉響應後,進入onRedirectReceived()回調函數。在這個函數中可以執行兩個行爲函數: a. 調用followRedirect(),然後重新進入開始狀態(Started)。 b. 調用cancel(),進入onCanceled()函數,app在請求進入已取消(Canceled )狀態之前還可以執行其他的操作。
  3. ​​​當app所有url跳轉執行完後,服務端發送響應頭信息,onResponseStarted()函數會被調用。請求進入等待讀Waiting for read() )狀態。app應該調用read()方法讀取響應體。read()方法調用後,進入讀取中狀態(Reading),然後可能會遇到下面集中情況:
  • 讀取行爲完成,還有更多數據可讀時:onReadCompleted()會被調用,然後再次進入等待讀狀態Waiting for read())。app應該執行read()繼續讀響應體。app也可以執行cancal()函數停止讀取。
  • 讀取行爲完成,沒有更多數據可讀時:onSucceeded()會被調用,請求進入最終的完成(Succeeded)狀態。
  • 讀取行爲出錯時:onFailed會被調用,然後請求進入最終的出錯(Failed)狀態。

下表展示了UrlRequest對象的整個生命週期:

cronet-lifecycle

其中:

說明

原文地址:

https://developer.android.com/guide/topics/connectivity/cronet/lifecycle#overview

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章