瞭解使用 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 物件的生命週期:
Cronet 要求生命週期
| 圖例 | |
|---|---|
| UrlRequest方法 | 
