瞭解使用 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()
後,要求會處於「讀取」狀態,這可能會產生下列結果:- 讀取動作成功,但有更多資料可用。系統會呼叫
onReadCompleted()
,而要求會再次處於「Waiting for read()」狀態。應用程式應再次呼叫read()
方法,以便繼續讀取回應主體。應用程式也可以使用cancel()
方法停止讀取要求。 - 讀取動作成功,沒有其他資料。
系統會呼叫
onSucceeded()
方法,要求現在處於「成功」最終狀態。 - 讀取動作失敗。系統會呼叫
onFailed
方法,要求的最終狀態現在為「失敗」。
- 讀取動作成功,但有更多資料可用。系統會呼叫
下圖顯示 UrlRequest
物件的生命週期:
圖例 | |
---|---|
初始狀態 | 最終狀態 |
過渡狀態 | 回呼方法 |
個UrlRequest 方法 |