讀古今文學網 > Android程序設計:第2版 > 代碼實例:動態列出並緩存YouTube視頻內容 >

代碼實例:動態列出並緩存YouTube視頻內容

為了說明前面介紹的架構,我們一起來看一下Finch視頻列表應用,它支持用戶使用RESTful API在手機上從http://gdata.youtube.com搜索視頻。示例代碼的設計主要針對移動環境的間歇性連接這一特性。應用保存了用戶數據,因此即使在網絡連接不可用時,應用還是可用的——雖然這可能意味著應用只能顯示老的、本地緩存的結果。當用戶運行查詢時,應用會嘗試為該查詢檢索最新的YouTube結果。如果應用成功地加載到了新的結果,它會把一周之前的結果刪除掉。如果應用在運行更新查詢前,只是盲目地丟掉老的結果,可能會導致沒有結果可以顯示,這會造成應用不可用,除非網絡連接重新可用。圖13-2所示的屏幕顯示了關鍵字為「dogs」的查詢。在搜索框中按下Enter鍵,或者單擊刷新按鈕會生成新的查詢。

圖13-2:Finch視頻示例應用

該應用包含一個緩存查詢內容提供者,它負責通過YouTube API來獲取YouTube的視頻元數據。查詢結果會緩存在名為video的SQLite表中,作為內容提供者的query方法的一部分。提供者利用了Finch框架來執行異步的REST請求。UI包含如圖13-2所示的活動、有1個搜索查詢框的列表及刷新按鈕。列表動態刷新內容提供者的數據通知。每當用戶輸入一個搜索查詢並按下Enter鍵時,活動會在FinchVideoContentProvider上以合適的URI查詢調用查詢請求。下面我們將詳細探討這個例子。