![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android进阶
文章平均质量分 83
刘木杉的技术博客
苦逼的程序员
展开
-
OkHttp的使用详解
一.说明 虽说现在网络层框架很多,比如volley,nohttp,okhttp等等,但是目前okhttp还是用的最多的。所以说详细的了解okhttp的使用,源码解析和okhttp的封装是十分必要的,这一系列文章将从okhttp的使用开始 OKHttp是Android版Http客户端。非常高效,支持SPDY、连接池、GZIP和 HTTP 缓存。默原创 2016-08-20 15:08:59 · 2787 阅读 · 0 评论 -
OkHttp3源码详解(二整体流程)
一.初始化OkHttpClient对OKHttpClient初始化无非就是对OkHttp的一些配置,我们先来了解下OkHttp中的一些类 Protocol 存放Http协议的一个枚举类,比如Http1.0,http1.1,spdy3.2,Http2.0ConnectionSpec 连接规范,用来配置Socket连接层,对于HTTPS,还能配置安全传输原创 2016-09-30 09:20:03 · 6376 阅读 · 0 评论 -
Okio的使用和源码解析
一.java NIO和堵塞I/O的区别 1.阻塞I/O通信模型: 阻塞I/O在调用InputStream.read()方法时是阻塞的,它会一直等到数据到来时才会返回 2.java NIO原理及通信模型 Java NIO是在jdk1.4开始使用的,是一种非阻塞式的I/O java NIO的工作原理: (1)Jav原创 2016-10-07 10:05:53 · 3510 阅读 · 0 评论 -
Retrofit2.0详解(一简单使用)
几个月前,对Retrofit进行了一个系统的学习,不过没有做一个整理和总结,正好国庆没什么事就写几篇博客对Retrofit的简单使用,上传下载进度监听,封装使用,源码解析做一个学习,记录如下1~简单使用 由于retrofit2.0与先前版本的差别还是比较大,对于不同版本之间的差异在这里就不在进行详细区别。下面的例子也是针对于retrofit2.0进行介绍的。retro原创 2016-10-07 11:30:34 · 2875 阅读 · 0 评论 -
Android之HandlerThread完全解析
上周辞职了空出来一周时间来,本来想好好充充能, 结果这几天同学过来找工作,陪他跑了好几天,原创 2016-10-14 20:04:05 · 448 阅读 · 0 评论 -
Android性能优化终结-内存篇
1.java垃圾回收机制gc (1)垃圾回收的优缺点: 优点: 垃圾回收器释放丢弃对象所占的内存空间,当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用 在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。原创 2016-09-16 15:42:40 · 1433 阅读 · 1 评论 -
Gradle细节详解及多渠道打包
Gradle使用详解1.gradle构建系统的目标让重用资源变得更加容易让创建同一应用程序的不同版本变得更加容易,无论是多个apk发布版本还是同一个应用的不同定制版本。让构建过程变得更加容易配置,扩展和定制。2.几个有用的Gradle命令 - ./gradlew -v 版本号 - ./gradlew clean 清除app/目录下的build文件夹 - ./gr原创 2017-07-16 13:59:24 · 4778 阅读 · 0 评论 -
Android技术周报(Android性能优化总结)
1、Android性能优化第(一)篇---基本概念http://www.jianshu.com/p/c0e5c13d5ecb第一篇简单回顾java的内存区域划分、引用、内存泄露以及场景,还有垃圾回收2、Android性能优化第(二)篇---Memory Monitor检测内存泄露http://www.jianshu.com/p/ef9081050f5c第二篇主要是使用过Andr原创 2017-02-18 19:48:11 · 506 阅读 · 0 评论 -
Rxjava2.x很详细的介绍
Rxjava详解Rxjava的优点: 链式调用,代码调用流程异常清晰 ,代码简洁。RxJava和EventBus一样也是基于观察者模式,但是使用的场景确实异步数据流的处理RxJava更加强大,利用操作符它可以对发出的消息进行一系列的变换引入依赖: compile 'io.reactivex.rxjava2:rxjava:2.0.1' compile 'io.re原创 2017-10-02 14:36:22 · 403 阅读 · 0 评论 -
Android Mvp+DataBinding架构模式详解
MVP模式的使用一. MVC与MVP设计模式的区别MVC:用户发出事件的时候,view层发出指令到controller层,controller层去通知model层更新数据,更新完数据后返回给view层展示。MVC反映到Android工程上V:layout.xml布局文件就相应于MVC的View层M:各种javaBean,第三方库类,ApiService,一系列helper和managerC:a原创 2017-10-22 10:28:34 · 1130 阅读 · 0 评论 -
自定义ScrollView实现下拉放大头部图片
下拉实现放大头部布局,先看一下下图的效果:代码实现如下:public class HeadZoomScrollView extends ScrollView { private View mZoomView; private int mZoomViewWidth; private int mZoomViewHeight; private float firstPosit原创 2017-10-22 12:15:59 · 1036 阅读 · 0 评论 -
自定义View基础(三)View的绘图篇
把自己整理的发出来,具体Demo就不放了1.Paint类:画笔类 void setAlpha(int a) 设置alpha不透明度,范围为0~255 void setAntiAlias(boolean aa) //是否抗锯齿,边缘更清晰一些,锯齿痕迹不会那么明显。但会消耗较大资源,绘制图形速度会变慢。 void setColo原创 2017-01-16 19:21:29 · 470 阅读 · 0 评论 -
自定义View基础(二)事件分发机制
消息事件传递流程 对于一个根ViewGroup来说,当事件发生时,会调用它的dispatchTouchEvent(MotionEvent ev)方法进行事件的分发,判断根 ViewGroup的onInterceptTouchEvent(MotionEvent ev)是否为true,return true则会把事件拦截交给这个ViewGroup处理,调用该ViewGrouponT原创 2017-01-16 17:58:06 · 404 阅读 · 0 评论 -
OkHttp3源码详解(一Request类)
上次在哪篇博客看到这句话,我们不重复造轮子不表示我们不需要知道轮子该怎么造及如何更好的造,我觉得很有道理对于用到项目的某个开源项目我们不应该只停留在会用的阶段,废话不多说,直接开始okhttp源码的学习之路原创 2016-09-03 23:04:26 · 12254 阅读 · 0 评论 -
Rxjava学习(二操作符)
上一篇说道我们可以利用操作符对Observable发出的消息进行拦截和修改,Rxjava的操作符很多,这里只介绍几种常用的filter filter()操作符是可以对Observable流程的数据进行一层过滤处理,返回一个新的Observable,filter()返回为false的值将不会发出到Subscriber,我们来看下具体的代码 Observable.just("2原创 2016-10-06 15:24:01 · 280 阅读 · 0 评论 -
RxJava学习(四利用RxJava打造自己的RxBus)
前面说过Rxjava的功能很强大,不仅仅是实现链式的异步操作,它的功能很强大还可以通过RxBus实现EventBus的消息/事件传递功能,我们来看看RxBuspackage com.example.liujian.rxjavademo;import java.util.HashMap;import rx.Observable;import rx.Subscriptio原创 2016-10-06 16:01:46 · 1460 阅读 · 0 评论 -
Android线程池详解
最近在看OkHttp的源码,看着看着就看到了有线程池的地方,以前自己对这个东西就也就感到云里雾里的,所以想把线程池的知识点和源码完整的看一篇 1.线程池有什么用? a.重用线程池中存在的线程,避免因为线程的大量创建和销毁所带来的性能开销 ,完成一项任务的时间T=创建线程的时间+在线程中执行任务的时间+线程销毁的时间, 而线程池的出现可以大大减少创建线程的时间和线程销毁原创 2016-08-11 17:48:45 · 1405 阅读 · 0 评论 -
AsyncTask源码详解
虽然AsyncTask现在用的很少,但是面试的时候还是会被问到,所以是时间好好研究一下AsyncTask的源码了首先来看一下execute方法的逻辑: @MainThread public final AsyncTask execute(Params... params) { return executeOnExecutor(sDefaultExecuto原创 2016-08-13 18:47:17 · 1360 阅读 · 0 评论 -
Android线程池源码解析
上一篇博客大概了解了下线程池是什么,这篇博客将在源码的基础上去验证上一篇博客中提到的Thread执行流程。我的博客保证是一个字一个字敲出来的 1.线程池源码解析 在ThreadPoolExecutor类中,最核心的任务提交方法是execute()方法,所以就先从execte方法开始来看看线程池的执行流程: public void execute(R原创 2016-08-12 10:01:47 · 924 阅读 · 0 评论 -
Android并发编程之volatile关键字
转载于http://blog.csdn.net/nugongahou110 相信很多人对于volatile关键字既熟悉又陌生,熟悉是对这个名字很熟悉,陌生是对他的原理和用法很陌生,最近几天通过查阅大量资料和书,终于对volatile有了一定的理解,写此博客一来做了记录,二来使大家减少学习成本volatile为什么不能保证原子性?现在我们的手机都是多核的,也就是说同时有好几颗转载 2016-08-12 17:48:12 · 853 阅读 · 0 评论 -
Android之基于HTTP协议的通信详解
搞计算机必须得有理论指导实践,否则只能像个没头苍蝇到处乱撞。 最近在研究网络编程,http协议是必须要去熟悉的,所以花了一个周末的时间对以前的学习笔记进行了整理,这里就直接copy了 一.HTTP协议: 1.HTTP协议用于定义客户端与web服务器进行交互的格式 2.HTTP是hypertext transfer protocol(超文原创 2016-08-21 20:12:03 · 2727 阅读 · 0 评论 -
Android性能优化-布局篇
一.布局优化 1.app里的每一个view,android系统都会经过三部曲来渲染:measure,layout,draw。measure从最顶部的节点开始, 顺着layout树形结构依次往下,测量每个view需要在屏幕当中展示的尺寸大小,节点所处位置越深,套嵌带来的measure越多,计算就会越费时 2.HierarchyViewer和lint工具原创 2016-09-21 21:39:33 · 384 阅读 · 0 评论 -
Android消息机制Handler的原理详解
Handler的作用 大家都知道,Handler是用来做子线程和UI线程之间的通信的,在子线程进行耗时的操作,然后通过Handler将消息传递到主线程中进行UI操作。大家有没有一个疑问,为什么不能在子线程更新UI?这是因为ViewRootImpl对UI操作做了验证 void checkThread(){ if(mThread!=Thread.curr原创 2016-10-08 15:17:39 · 848 阅读 · 0 评论 -
Android之IntentService完全解析
我们先不扯IntentService是什么什么的,扯那么东西都太空洞,不如看源码来的深刻IntentService源码 public abstract class IntentService extends Service { private volatile Looper mServiceLooper; private volatile ServiceHandle原创 2016-10-14 22:26:48 · 330 阅读 · 0 评论 -
Android DataBinding(MVVM设计模式)
在网上找了很多MVVM的技术博客,大多讲的云里雾里不知所云,但是发现这一篇讲的还不错,适合入门,转载一下什么是MVVM说到DataBinding,就有必要先提起MVVM设计模式。Model–View–ViewModel(MVVM) 是一个软件架构设计模式,相比MVVM,大家对MVC或MVP可能会更加熟悉。MVC:(VIew-Model-Controller)早期转载 2016-10-03 19:06:44 · 818 阅读 · 0 评论 -
EventBus3.0的使用详解
学习一种技术我们先得了解下为什么要学习,它的优点是什么。 对于EventBus的话,我想作用大概有如下两点:代替Thread+Handler的线程间通信方式和代替回调,EventBus主要用来做消息/事件的传递,可以代替传Intent,Handler,Broadcast或接口函数在Fragment,Activity,Service,线程之间传递消息,开销更小,代码更加简洁易懂,其实主要作用原创 2016-10-05 22:13:59 · 372 阅读 · 0 评论 -
Rxjava学习(一基础篇)
一.Rxjava跟EventBus的 RxJava 是一个响应式编程框架,通过一种扩展的观察者设计模式来实现异步操作。 跟AsyncTask和Handler类似,但是比AsyncTask和Handler更加简洁随着程序逻辑变得越来越复杂,它依然能够保持逻辑的简洁。另外还可以自己封装一个RxBus进行消息事件的传递,有人可能会问这些功能EventBus也能够做,那么为什么还需要Rx原创 2016-10-05 23:25:47 · 615 阅读 · 0 评论 -
Rxjava学习(三线程调度器Scheduler)
我们知道,RxJava最主要的特点就是异步操作,它的异步操作就是用Scheduler来指定Observable和Subscriber所运行的线程,在默认情况下,即在不指定线程的情况下,RxJava遵循的是线程不变的原则,即:在哪个线程生产事件,就在哪个线程消费事件Schedulers线程调度器我们来看一下Schedulers的分类:(1)Schedulers.i原创 2016-10-06 15:35:54 · 503 阅读 · 0 评论 -
自定义View基础(一)View的绘制流程
自从十月份来到这家公司,大概有三个多月没更新博客了,主要是太忙,996的工作节奏着实让人没有太多的空闲时间去整理学习,其实也不想抱怨太多,既来之则安之吧。 公司是做股票财经类软件的,对自定义View这一块要求比较多吧。所以这一系列文章想对自定义View做一个学习总结,从绘制流程,事件分发机制,绘图,自定义ViewGroup,自定义分时K线图做一个整体的整理和学习。本篇从View的绘原创 2017-01-16 15:37:06 · 2072 阅读 · 0 评论