我的Android之路
文章平均质量分 91
fightingXia
这个作者很懒,什么都没留下…
展开
-
OKHttp使用详解
一,OKHttp介绍okhttp是一个第三方类库,用于android中请求网络。这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和LeakCanary) 。用于替代HttpUrlConnection和Apache HttpClient(android API23 里已移除HttpClient)。okhttp有自己的官网,官网网址:OKHttp原创 2017-04-29 12:38:55 · 90788 阅读 · 13 评论 -
OKHttp源码分析(三)之ResponseBody
一,概述在使用OKHttp访问网络时,无论是同步请求还是异步请求,返回结果都是Response对象,所有的说句都封装在这个对象中。 这个对象常用的方法有:int code = response.code();//获取响应码String message = response.message();//获取响应消息ResponseBody body = response.body();//获取响应原创 2017-05-06 12:55:29 · 15899 阅读 · 1 评论 -
OKHttp原码分析(四)之getResponseWithInterceptorChain方法
一,概述在OKHttp原码分析(一)最后讲到无论是同步请求还是异步请求都殊途同归到了RealCall的getResponseWithInterceptorChain方法。这篇blog主要讲解RealCall的getResponseWithInterceptorChain方法。二,getResponseWithInterceptorChain方法源码 private Response getResp原创 2017-05-06 13:30:37 · 2428 阅读 · 2 评论 -
OKHttp原码分析(六)之RealConnection
一,概述okhttp是底层实现框架,与httpURLconnection是同一级别的。OKHttp底层建立网络连接的关键就是RealConnection类。RealConnection类底层封装socket,是真正的创建连接者。分析这个类之后就明白了OKHttp与httpURLconnection的本质不同点。RealConnection是底层类,都是间接的被其他类调用,所以到目前为止还未发现使用这原创 2017-05-07 11:25:34 · 955 阅读 · 0 评论 -
多线程同步的方法
一,概述1,什么是线程同步?当使用多个线程来访问同一个数据时,这个数据在被一个线程访问完成前不允许被其他线程访问。这就叫同步。2,什么情况下需要同步?* 当多线程并发, 有多段代码同时执行时, 我们希望某一段代码执行的过程中CPU不要切换到其他线程工作. 这时就需要同步.* 如果两段代码是同步的, 那么同一时间只能执行一段, 在一段代码没执行结束之前, 不会执行另外一段代码.3,多线程同步的方法原创 2017-04-25 21:48:21 · 1237 阅读 · 0 评论 -
多线程之间的通信
一,概述1.什么时候需要通信? * 多个线程并发执行时, 在默认情况下CPU是随机切换线程的。 * 如果我们希望线程间有规律的切换, 就需要进行线程间通信。例如先让线程一执行,当线程一执行结束时再让线程二执行。2.怎么实现线程间通信? 实现线程间通信要借助于多线程同步,所以也分为两种方法,一种使用synchronized 关键字实现,另一种使用ReentrantLock 类实现原创 2017-04-25 22:52:24 · 465 阅读 · 0 评论 -
OKHttp原码分析(五)之Interceptor
一,概述在上篇blog中可知:在RealCall的getResponseWithInterceptorChain方法中创建了许多不同类型的Interceptor对象。然后在RealInterceptorChain对象的proceed方法中有调用了Interceptor对象的intercept方法,最终返回Response对象。Interceptor称为拦截器,这是OKHttp中的一个机制,它的作用是原创 2017-05-06 14:04:51 · 652 阅读 · 0 评论 -
OKHttp原码分析(八)之必须明白的几个问题
截止到上一篇blog,OKHttp的源码分析已结束,由于篇幅有限,个人能力不足,分析不够细致,也不够完美,希望小伙们多多指正。这篇blog以带着问题找答案的方式再次回顾下OKHttp的源码。首先提出以下几个问题:Okhttp的异步请求是怎么开启子线程的?异步请求时回调方法在哪被调用的?回调方法执行在哪个线程?Okhttp上传文件的原理。OKHttp下载文件的原理,是否支持断点续传?原创 2017-05-09 20:44:45 · 782 阅读 · 0 评论 -
OKHttp原码分析(七)之HttpStream
在上篇blog中,讲解了RealConnection类以及重要的方法。当RealConnection类只在httpStream类中被引用。httpStream类是对RealConnection类的封装。在ConnectInterceptor类中创建了httpStream对象。在CallServerInterceptor类中使用httpstream写请求头,写请求头,得到Response对象。原创 2017-05-07 14:07:43 · 1959 阅读 · 0 评论 -
线程池使用详解
一,概述线程池就是把线程放到一个池子里养起来,用的时候从池子里拿,用完后放到池子里,保证不销毁。程序启动一个新线程成本是比较高的,因为它涉及到要与操作系统进行交互。使用线程池可以很好的提高性能,尤其是当程序中需要创建大量生存期很短的线程时,更应该考虑使用线程池。线程池里的每一个线程代码结束后,并不会死亡,而是再次回到线程池中成为空闲状态,等待下一个对象来使用。使用线程池的好处: *1重用线程,避免原创 2017-04-27 21:38:31 · 819 阅读 · 0 评论 -
自定义View(一)之初识自定义View
我的自定义View的学习起源于CSDN,当时由于工作的需要开始在CSDN上搜索自定义view的blog查看,慢慢的可以实现了简单的自定义View的需求。随着时间的推移,自定义View的blog看的多了,也在工作中积累了相关经验,慢慢的自定义view的知识点掌握了很多,也做了很多笔记,大家都知道我早期总结的笔记都保存到本地。最近又看View相关的源码,又原创 2017-05-20 12:08:16 · 702 阅读 · 0 评论 -
开启子线程的方法
概述在Android开发中离不开多线程,网络请求等耗时的操作一般都放在子线程中执行,那么开启子线程的方法有哪些?下面做个总结。直接使用Thread类。使用Runnable和Thread。使用Runnable和线程池。使用AsyncTask。使用HandlerThread。使用IntentService。下面对各种方法的用法及原理做详细的解释。原创 2017-04-23 22:42:00 · 2648 阅读 · 0 评论 -
Handler运行机制中必须明白的几个问题
概述我在看完Handler的源码后有两个感觉,一是貌似明白了很多东西,二是当问到具体问题时感觉还是模模糊糊。下面我们就带着问题再看一次源码,力争把这块知识点搞的明明白白。问题有:在UI线程中有几个Looper对象?有几个MessageQueue对象?有几个Handler对象?有几个Message对象?怎么保证只有一个Looper对象的?怎么保证只有一个MessageQueue对象的?为什么发原创 2017-04-23 11:40:51 · 2144 阅读 · 0 评论 -
UrlHttpUtils使用介绍
一,概述在上一篇blog的末尾讲到了httpURLconnection使用时的缺点,和对httpURLconnection封装的必要性。鄙人不才,对httpURLconnection封装了一个工具类,并分享到了github。这篇blog主要讲解鄙人封装的httpURLconnection的使用方法。源码比较简单,感兴趣的朋友可以自行下载查看。github的地址是:https://github.com原创 2017-05-13 10:15:31 · 2609 阅读 · 0 评论 -
OKHttpUtils使用介绍
在上一篇blog的末尾讲到了OKHttp使用时的缺点,和对OKHttp封装的必要性。在github上有很多对OKHttp封装的优秀框架,其首推的就是hongyang大神的OKHttpUtils。关于hongyang大神的OKHttpUtils使用以及源码分析在后面章节再做讲解。这篇blog主要讲解鄙人自己封装的OKHttpUtils的使用方法。源码比较简单,感兴趣的朋友可以自行查看。原创 2017-04-29 17:55:25 · 30590 阅读 · 11 评论 -
OKHttp原码分析(一)
一,概述okhttp并不是对某个网络请求类的封装,它是偏底层的网络请求类库,封装的是传输层的socket,与httpURLconnection是同一级别的。OKHttp比起httpURLconnection做了大量的性能优化和在使用上的优化,因此OKHttp的源码也比较复杂,需要连续多篇blog进行讲解分析。这篇blog以get请求为例主要分析以下几点: 1,OkHttpClient对象的创建。原创 2017-04-30 12:07:30 · 1328 阅读 · 0 评论 -
OKHttp源码分析(二)之RequestBody
一,概述在上篇blog中以get请求为例分析了OKHttp框架的表层源码,具体参见:OKHttp源码分析(一)在post请求中用到的API很大部分与get请求中用到的API相同,最大的不同就是Request.Builder类的post方法,这个方法的作用是设置post请求的请求体,接收的参数是RequestBody类及子类对象。Request.Builder类的post方法的源码是: publ原创 2017-05-01 12:30:38 · 11599 阅读 · 1 评论 -
自定义View(三)之View类的onMeasure方法详解
onMeasure方法的作用是测量,测量view的宽高。一般情况下测量的宽高就是实际显示的宽高,但也有特殊情况,特殊情况在ViewGroup的onLayout方法中讲解,目前先认为测量的宽高就等于实际显示的宽高。下面先讲解onMeasure方法的基本用法,然后再分析onMeasure方法的源码。原创 2017-05-20 15:52:27 · 1112 阅读 · 0 评论 -
自定义View(四)之QuickIndex的实现
一,概述在APP中,只要有联系人,都肯定有通讯录页面,而且所有的通讯录以页面都很相似,一个列表,列表中的人员按字母排列,而且按字母分组显示,且右侧有快速索引。具体效果如下图: 右侧带字母的view就是快速索引条,点击字母就可以快速找到该字母对应的联系人。使用如此广泛的View,在android SDK中并没有提供,此时就需要自定义View实现。该View实用且简单,值得学习自定义View的小伙伴来原创 2017-05-21 09:58:19 · 570 阅读 · 0 评论 -
HttpUrlConnection使用详解
一,HttpURLconnection的介绍在Android开发中网络请求是最常用的操作之一, Android SDK中对HTTP(超文本传输协议)也提供了很好的支持,这里包括两种接口: 1、标准Java接口(java.NET) —-HttpURLConnection,可以实现简单的基于URL请求、响应功能; 2、Apache接口(org.appache.http)—-HttpClient,使用原创 2017-05-13 09:33:57 · 72117 阅读 · 12 评论 -
写在前面的文字
作为一个程序猿,很早就有写blog的想法,但出于某些理由和借口迟迟没有动笔,今天下定决心去写点东西。在写东西前先扯点没用的,为了记录当前的想法,也为了激励以后能持续写作。我是一枚Android程序猿,在2013年初进职场时就开始接触CSDN,当时遇到不会的功能首先想到的就是去CSND上寻找答案。在闲暇时,想学点新东西就会去看CSDN大神的博客,可以说CSDN为我技术的提升提供了很大的帮助。在最初...原创 2017-04-22 15:01:27 · 573 阅读 · 2 评论 -
Handler的使用方法
一,概述Android中为什么需要Handler机制?因为在android中有两个规定: 1. 网络请求操作要放到子线程。 2. 不能在子线程更新UI。所以Android中必须有线程间的通讯机制,Handler的作用就是负责线程间的通信。在网络请求完成后,通过handler告诉UI线程更新UI,并传递数据。原创 2017-04-22 16:21:25 · 2360 阅读 · 0 评论 -
自定义View(五)之继承ViewGroup
一,概述在android系统中可以把View分为两大类,一类是View,这类View本身具有展示UI的作用,比如TextView可以展示文本,ImageView可以展示图片,EditText可以编辑文字。另外一类是ViewGroup,即容器View,ViewGroup本质是容器,用来盛放View,并决定View的摆放位置,这类View如Linearlayout和RelativeLayout。当我们需原创 2017-05-23 23:55:48 · 868 阅读 · 0 评论 -
Handler的运行机制
概述Handler机制又称为Android中的消息机制,这是Android中的重点,是最常用的线程间通信的方式。本blog首先介绍android中为什么要提供消息机制,然后以分析原码的形式讲解消息机制中重要的类及类中重要的方法,再讲解各个类之间的调用关系,最后对Handler的执行机制进行总结。 Android中的消息机制一,Android中为什么要提供消息机制我们都知道在android中有两个规原创 2017-04-22 23:26:06 · 1490 阅读 · 1 评论 -
自定义View(二)之Paint和Canvas详解
一,概述在Android中,所有的控件显示本质都是画出来的。所以在学习自定义控件时必须学习使用canvas和paint这个两个类。Paint是指画笔,Canvas是指画布或画板,android中View的绘制类似于美术专业学生的画画,使用带有一定属性的笔,在画板上画出想要的图案。原创 2017-05-20 13:56:07 · 673 阅读 · 0 评论