首页 » Android程序设计:第2版 » Android程序设计:第2版全文在线阅读

《Android程序设计:第2版》代码实例:动态列出并缓存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查询调用查询请求。下面我们将详细探讨这个例子。