使用Android API最佳实践
2016-10-31 10:35
375 查看
使用Android API最佳实践
写在前面
现在,Android应用程序中集成第三方API已十分流行。应用程序都有自己的网络操作和缓存处理机制,但是大部分比较脆弱,没有针对网络糟糕情况进行优化。感谢Square lnc 这家有创新精神的公司,将信用卡商业交易带到手机上。现在有了一系列高质量开源库,支持在Android应用程序中集成。
做什么,如何做?
现在,我们要依次学习使用Retrofit、OKHttp和GSON,简单快速的集成REST API。使用这个组合,我们需要从Twitch.tv下载并解析一些数据。跟着下面的步骤可以在几分钟内,不用写繁琐的模板代码,完成大部分的REST API集成。
学习
RetrofitRetrofit简化了从Web API下载数据,解析成普通的Java对象(POJO)。例如,要从Github 上下载用户仓库的信息,你只需要编写下面的几行:
Java
123 | ; html-script: false ] @GET("/users/{user}/repos") List listRepos(@Path("user") String user); |
开始Coding
添加库文件到工程下载Retrofit、OKHttp、GSON库文件。逐个添加jar文件到你的工程中。
如果使用Android Studio,可以使用gradle同步这个工程。
查找或者编写API你可能已有一份API,如果你还在寻找API目录,我推荐ProgrammableWeb。在这个教程中,我们会解析Twitch.Tv的数据流。请求格式请参考说明手册。Twicht.tv请求数据流的JSON格式:
http://api.justin.tv/api/stream/list.json展示输出展示一些API返回的数据,下面的示例是由于是一个GET请求,只能在浏览器中运行,返回数据如下:JavaScript
1 2 | ; html-script: false ] [{"broadcast_part": 4, "featured": true, "channel_subscription": true, "audio_codec": "uncompressed", "id": "6640712464", "category": "gaming", "title": "Fnatic xPeke, Normals(ranked down) on smurf", "geo": "DE", "video_height": 1080, "site_count": 8014, "embed_enabled": true, "channel": {"subcategory": null, "producer": true, "image_url_huge": "http://static-cdn.jtvnw.net/jtv_user_pictures/xpeke-profile_image-a182a5fe5a8f239b-600x600.jpeg", "timezone": "Europe/Madrid", "screen_cap_url_huge": “http://static |
这部分很有趣,用我们获取到的数据自动创建对应的POJO。使用jsonschema2pojo,导入包名、类名和JSON数据,保存为私有类型。示例中展示的构造器无法使用,因为JSON数据的根元素是个数组,不是对象。所以我只贴出了数组的第一个元素。展示相关的图片示例。
集成POJOs
将自动产生的POJOs粘贴到工程中就可以了。在我的示例工程中,他们在models包中。
使用Retrofit下载(解析)API
创建REST Adapter
创建Adapter,类似设置endPoint。
Java
1234 | ; html-script: false ] RestAdapter restAdapter = new RestAdapter.Builder() .setEndpoint("http://api.justin.tv/api") .build(); |
1 2 3 4 | ; html-script: false ] public interface TwitchTvApiInterface { @GET("/stream/list.json") void getStreams(@Query("limit") int limit, @Query("offset") int offset, Callback<List> callback);} |
创建Twitch.tv 服务
现在我们已经建立了endPoint,定义了需要的接口。下面需要创建Twitch.TV服务,发送请求。
Java
12 | ; html-script: false ] TwitchTvApiInterface twitchTvService = restAdapter.create(TwitchTvApiInterface.class); |
1 2 3 4 5 6 7 8 9 10 11 | ; html-script: false ] twitchTvService.getStreams(ITEMS_PER_PAGE, pageNumber * ITEMS_PER_PAGE, new Callback<List>() { @Override public void success(List justinTvStreamData, Response response) { consumeApiData(justinTvStreamData); } @Override public void failure(RetrofitError retrofitError) { consumeApiData(null); }}); |
数据处理趣事
现在我们用POJO数据做一些有趣的事情。在这个Demo中,展示了Twitch.Tv频道的图片和描述,使用Picasso Library 下载缓存图片。
转自:使用Android API最佳实践
相关文章推荐
- 转:使用Android API最佳实践
- 使用Android API最佳实践 Retrofit OKHttp GSON
- 使用Android API最佳实践 Retrofit OKHttp GSON
- 使用Android API最佳实践
- 使用Android API最佳实践 Retrofit OKHttp GSON
- 使用Android API最佳实践
- 使用Android API最佳实践
- 使用Android API最佳实践 Retrofit OKHttp GSON
- WSSv3 Technical Articles_最佳实践:Windows SharePoint Services对象使用Disposable
- 使用ADO.NET的最佳实践
- 数据访问:使用 ADO.NET 的最佳实践(ADO.NET 技术文档)
- JSP 最佳实践: 使用JSTL来更新JSP页面 ------标准化JSTL标记为您的Web页面带来更多的功能
- JSP 最佳实践: 使用JSTL来更新JSP页面
- 为Card添加属性时尽量使用日期-Mingle最佳实践
- DataRabbit 轻量的ORM框架(17)-- 使用DataRabbit的最佳实践
- DataGrid使用最佳实践(导出excel)
- BA使用Mingle的最佳实践
- 使用 HTTP 会话的最佳实践
- 使用ADO.NET的最佳实践
- ADO.NET 的最全实例,Ado.Net最佳使用方法 ADO.NET 的最佳实践技巧