最近面试,一直被问道新技术新框架,这块是短板,慢慢补吧。

关于框架的学习,分几个步骤

I.框架的使用

II.框架主流使用的版本和Android对应的版本

III.框架的衍生使用比如okhttp就会有Retrofit的使用

IV.框架历史版本,已经每个版本解决的问题

V.框架源码的分析

VI.框架设计思想,优缺点,如何解决。

第一天(20160919):

计划:

okhttp 的使用

okhttp 的主流版本和对应android版本

okhttp对应的retrofit的框架使用。

okhttp:

GitHub地址:

https://github.com/square/okhttp

I.OKHttp的使用。

下面是OKhttp的使用过程。

public class OkhttpRequestManagerImpl extends NetworkRequestBaseManager {
OkHttpClient client = null;
CallBackListener callBackListener = null;
@Override
public void initManager(NetWorkResponse response) {
super.initManager(response);
client = new OkHttpClient();
callBackListener = new CallBackListener();
} @Override
public void release() {
super.release();
callBackListener = null;
client = null;
} @Override
public void requestHttp(int method, String hostUrl, String methodUrl) {
String url = hostUrl+methodUrl;
final Request request = new okhttp3.Request.Builder().url(url)
.addHeader("Accept", "application/json")
.build();
Call call = client.newCall(request);
call.enqueue(callBackListener);
} class CallBackListener implements okhttp3.Callback{ @Override
public void onFailure(Call call, IOException e) {
deliverFailure(e.getMessage());
} @Override
public void onResponse(Call call, Response response) throws IOException {
deliverSuccess(response.body().string());
}
}
}

一个简单的使用过程如上代码。

post请求:

 @Override
public void requestHttp(int method, String hostUrl, String methodUrl, Map<String,String> map) {
switch(method)
{
case METHOD_GET:
requestGet(hostUrl, methodUrl);
break;
case METHOD_POST:
requestPost(hostUrl,methodUrl,map);
break;
} } private void requestPost(String hostUrl, String methodUrl, Map<String, String> map) {
try {
String url = hostUrl + methodUrl;
StringBuilder tempParams = new StringBuilder();
int pos = 0;
for (String key : map.keySet()) {
if (pos > 0) {
tempParams.append("&");
}
tempParams.append(String.format("%s=%s", key, URLEncoder.encode(map.get(key), "utf-8")));
pos++;
}
String params = tempParams.toString();
RequestBody body = RequestBody.create(MEDIA_TYPE_JSON, params);
final Request request = new Request.Builder().url(url)
.post(body)
.build();
Call call = client.newCall(request);
call.enqueue(callBackListener);
}catch (Exception e)
{
deliverFailure(e.getMessage());
}
} private void requestGet(String hostUrl, String methodUrl) {
String url = hostUrl+methodUrl;
final Request request = new Request.Builder().url(url)
.addHeader("Accept", "application/json")
.get()
.build();
Call call = client.newCall(request);
call.enqueue(callBackListener);
}

II.OKHttp 功能

Android 框架学习之 第一天 okhttp & Retrofit的更多相关文章

  1. struts2框架学习之第一天

    day01 Struts2概述 1 什么是框架 试想一下,人与人之间不同之处多,还是相同之处多呢?当然是相同之处多,不同之处少!人都有头,而且头都在脖子上面! 软件之间也是相同之处多,不同之处少,框架 ...

  2. Android 框架学习1:EventBus 3.0 的特点与如何使用

    前面总结了几篇基础,在这过程中看着别人分享自定义 View.架构或者源码分析,看起来比我写的"高大上"多了,内心也有点小波动. 但是自己的水平自己清楚,基础不扎实画再多源码流程图也 ...

  3. Android 框架学习3:从 EventBus 中学到的精华

    关联文章: EventBus 3.0 的特点与如何使用 源码分析 EventBus 3.0 如何实现事件总线 学习的目的是为了超越,经过前面对 EventBus 3.0 的学习,我们已经对它相当熟悉了 ...

  4. Android 框架学习2:源码分析 EventBus 3.0 如何实现事件总线

    Go beyond yourself rather than beyond others. 上篇文章 深入理解 EventBus 3.0 之使用篇 我们了解了 EventBus 的特性以及如何使用,这 ...

  5. Python-Django框架学习笔记——第一课:Hello World

    Python Django 有诗云: 孤山寺北贾亭西,水面初平云脚低. 几处早莺争暖树,谁家新燕啄春泥. 乱花渐欲迷人眼,浅草才能没马蹄. 最爱湖东行不足,绿杨阴里白沙堤. 今天在信阳游玩,有幸来到信 ...

  6. Android NDK学习之第一个实例---端口扫描

    为什么要写一个端口扫描的程序,Java来写不是很方便吗?因为我也没有想到什么例子能够方便的来练习.于是想到以前找到的端口扫描的C代码,于是想用他们来练习.扫描服务端端口的方式有许多种,最简单的就是直接 ...

  7. ASP.NET MVC5的一个轻量级的框架学习的第一天

    第二步第三部 这是第一天的小试成功,怪自己太笨了,一个错排查好久,还好有源码看着了解,后续还得多努力,

  8. 【Android - 框架】之OkHttp的使用

    OkHttp是一个非常优秀的网络访问框架,当下非常火的Retrofit的底层就是使用OkHttp进行封装的.接下来介绍以下OkHttp的简单使用. 1.导入依赖 在Android Studio中,在M ...

  9. 【Android - 框架】之Retrofit+RxJava的使用

    前几天分别对Retrofit和RxJava进行了总结,这个帖子打算把Retrofit结合RxJava使用的方法总结以下.有还不了解Retrofit或RxJava的朋友可以参考下面的帖子学习~ [And ...

随机推荐

  1. MySQL学习笔记九:存储过程,存储函数,触发器

    存储过程 1.存储过程由一组特定功能的SQL语句组成,对于大型应用程序优势较大,相对不使用存储过程,具有以下优点: a.性能提高,因为存储过程是预编译的,只需编译一次,以后调用就不须再编译 b.重用性 ...

  2. JQuery EasyUI datagrid 复杂表头处理

    下面是我项目中和网上收集的EasyUI的表头处理的,合适的拿去用吧. 例子1: $('#day_health').datagrid({                 url: "sqb_b ...

  3. Oracle常用函数

    前一段时间学习Oracle 时做的学习笔记,整理了一下,下面是分享的Oracle常用函数的部分笔记,以后还会分享其他部分的笔记,请大家批评指正. 1.Oracle 数据库中的to_date()函数的使 ...

  4. DevExpress控件安装、汉化使用教程

    前言 DevExpress是一个庞大的控件库,也很是好用(没用过,听说),但是要收费. 网上关于DevExpress的教程满天飞,我找了一下午也没找到正确的安装.简单实用教程,还是自己摸索吧. 自己动 ...

  5. 项目中遇到的Integer问题--转

    Integer类型值相等或不等分析 http://www.cnblogs.com/zzllx/p/5778470.html 看到博客园一位博友写的面试问题,其中一题是 Integer a = 1; I ...

  6. CSS3的flex布局

    flex的一些属性 CSS3中引入了另一种框--flexbox,flexbox有一些block和inline不同的性质,比如: 自适应子元素(flex item,又称伸缩项目)的宽度 伸缩项目的flo ...

  7. Oracle并行添加主键的方法

    环境:Oracle 11.2.0.3 需求:生产一张表由于前期设计不当,没有主键.现需要添加主键,数据量很大,想并行建立.   1.直接添加,提示ora-3001:未实施的功能;只能单线程建立主键 S ...

  8. 探秘Tomcat——启动篇

    tomcat作为一款web服务器本身很复杂,代码量也很大,但是模块化很强,最核心的模块还是连接器Connector和容器Container.具体请看下图: 从图中可以看出 a. 高亮的两块是Conne ...

  9. Ubuntu下搭建ryu环境

    RYU环境搭建总共四步: step1:首先下载相应的python套件,并且更新pip $ sudo apt-get install python-pip python-dev build-essent ...

  10. 多个 App 间启动

    http://developer.nokia.com/: URI associations for Windows Phone http://msdn.microsoft.com/: Auto-lau ...