- 博客(35)
- 资源 (13)
- 收藏
- 关注
原创 Retrofit源码解析
Retrofit源码解析Retrofit概述Retrofi是对OkHttp的封装,简化了网络请求。使用Retrofi完成网络请求的一般步骤如下:使用Retrofit定义的 http注解,定义一个与Http API对应的java接口。实例化一个Retrofit实例调用Retrofit.create()方法,并将定义好的接口的类类型传递给这个方法,获得这个接口的
2017-07-30 22:30:25
506
原创 Retrofit详解
Retrofit详解简介Retrofit是一个将Http API转化为Java接口,最终将接口转换为 callable 对象,并能执行同步和异步Http请求的Http Client。具体来讲,使用Retrofit的步骤包括:使用注解来定义Http API的Java接口。定义好接口之后,通过Retrofit实例生成接口实例通过调用接口实例的方法,获取Call对
2017-07-28 12:13:11
929
转载 开源项目解析之--Okio
Retrofit,OkHttp,Okio 是 Square 团队开源的安卓平台网络层三板斧,它们逐层分工,非常优雅地解决我们对网络请求甚至更广泛的 I/O 操作的需求。其中最底层的 Okio 堪称小而美,功能也更基础,应用更广泛。这次我们就对它进行一个详细的分析。本文的分析基于 Okio 截至 2016.8.4 的最新源码,非常建议大家下载 Okio 源码之后,跟着本文,过一遍源码。
2017-06-21 11:28:36
1983
原创 Android动画详解(属性动画、视图动画和帧动画)
Android 动画框架Android提供了三种动画系统:Property Animation: 属性动画,3.0引入,比较灵活,能够作用于所有对象View Animation:视图动画,只能作用于view对象,使用比较简单。Drawable Animation:帧动画,通过连续的加载 Drawable资源来实现动画效果。属性动画(Property Animatio
2017-06-01 14:43:54
566
原创 Picasso源码完全解析(七)-- CleanupThread 取消请求
Picasso源码完全解析(七)-- CleanupThread 取消请求在开发过程中,我们常常有这样一种应用场景:在使用ListView或者RecylerView或者GridView时,为了提高性能,会采用item复用机制,即默认加载一屏的item,当item变得不可用的时候用来显示下一个将要显示的item,这样避免重复创建和销毁item。如果item用来显示图片,那么会造成这样一个问题
2017-05-17 11:37:22
747
原创 Picasso源码完全解析(六)--请求的取消、暂停、和恢复
Picasso源码完全解析(六)--请求的取消、暂停、和恢复Picasso为管理请求,提供了取消、暂停和恢复请求的方法。请求的取消请求的取消通常是通过picasso.cancel方法执行的,最终会调用这个方法: private void cancelExistingRequest(Object target) { checkMain(); Action
2017-05-17 09:14:55
1212
原创 Picasso源码完全解析(五)--图片的获取(BitmapHunter)
Picasso源码完全解析(五)--图片的获取(BitmapHunter)从上一节的分析可以知道,最终的Action是由dispatcher.performSubmit(action)执行的,看看这个方法的源码: void performSubmit(Action action) { performSubmit(action, true);}void performSu
2017-05-17 09:13:24
1087
原创 Picasso源码完全解析(四)--Action分发和执行
Picasso完全源码解析(四)--Action分发和执行上节讲到 我们的每个图片请求最后生成一个Action被提交给Picasso执行,那么那么多的Action Picasso是怎么执行的呢?void enqueueAndSubmit(Action action) { Object target = action.getTarget(); if (target !=
2017-05-16 20:56:52
522
原创 Picasso源码完全解析(三)--Request和Action的创建
## Picasso完全源码解析(三)--Request和Action的创建##使用Picasso可以加载链接、文件、Uri以及引用自带的res资源, public RequestCreator load(@Nullable Uri uri) { return new RequestCreator(this, uri, 0); }
2017-05-16 20:54:54
571
原创 Picasso源码完全解析(二)--Picasso实例的创建
## Picasso完全源码解析(二)--Picasso实例的创建 ##Picasso提供两种方式获得Picasso实例1. 全局的默认实例2. 通过Picasso.Builder自己构建Picasso实例由于Picasso是一个重量级的对象,它的创建涉及到很多资源和复杂的过程,比如它需要占用一部分内存作为缓存,需要开启回收线程等等,同时其销毁也比较复杂,频繁的创建
2017-05-16 20:53:21
597
原创 Picasso源码完全解析(一)--概述
##Picasso源码解析(一)--概述##Picasso是一个省事的图片加载框架,对于复杂的图片加载需求,常常像这样一行代码搞定: Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);很多在Android上图片加载的陷阱都被Picasso自动处理,比如:1.
2017-05-16 20:51:06
677
原创 Android源码剖析之----系统服务的获取
我们先来看看Android的体系结构图:可以看到,在Framework层,最核心的功能是一些XXXManager,这些Manager有些是IBinder,有些不是IBinder但间接调用系统服务的IBInder实现功能。总之,这些XXXManager最终的功能是直接或者间接调用系统服务的IPC功能实现的。而系统的所有的服务都通过ServiceManager管理。我们知道,要
2016-01-29 17:09:24
340
原创 Java基础之---并发(Concurrency)和多线程
Java提供并发主要通过两种方式:Java语言和Java类库,从5.0之后,Java又提供了高级的API:java.util.concurrent,来更好的支持并发什么是并发?能够同时执行多项任务的能力叫并发。进程和线程进程和线程是两个基本的执行单位。进程是资源分配的基本单位,线程是处理机调度的基本单位进程进程是一个自包含的运行环境,它有一套完整的私有的资源。一
2016-01-25 21:11:40
733
原创 Java基础之----I/O
Java的 I/O主要包括两个方面:I/O Stream和File I/O。前者主要涉及Java的各种流式输入输出,这是Java简化输入输出的一种抽象概念;后者主要涉及文件操作和文件系统。I/O Stream部分,对应于java.io包,而 File I/O部分对应于 java.nio.file包。下面,分别对这几部分分别进行总结。这让我不禁想起了曾经腾讯的一次面试经历,“请说说Java
2016-01-25 20:25:01
307
原创 Java基础之----异常处理(1.7以上)
什么是异常异常是在程序执行过程中发生的,中断程序正常执行流程的事件.Exception是exceptional event的简称java编程语言用异常来处理错误和其他异常事件。处理过程 当在一个方法执行过程中发生一个异常,这个方法会创建一个异常对象,并把发这个对象传递给运行时系统,这个过程叫抛出异常,这个异常对象包含异常的类型以及异常发生时,程序的状态。运行时系统收到这个异
2016-01-25 17:01:07
1334
原创 未来一个月的计划
毕业已经2年半了,马上就要三年了,羊年已逝,猴年在望,在这辞旧迎新的时候,也该回顾一下过去,畅想一下未来,写博客就是最好的方式。不知道当初是怎么选择了计算机这个专业,11年开始接触Java,12年开始接触Android,毕业之后也一直从事android开发工作。回想一下,挺庆幸自己当初选择了软件工程这个专业。同时,不知不觉,毕业已经2年半了,工作之后,觉得有点遗憾的是大学四
2016-01-25 16:23:54
1414
原创 Android源码剖析之-----Activity的启动过程
在ActivityThread的创建过程中,介绍了关于ActivityThread类的创建过程。在main方法里主要完成了以下工作:为主线程创建Looper创建ActivityThread对象,在创建的时候,同时会实例化 mH和ApplicationThread对象。通过attach()方法,通知AMSActivityThread创建完毕初始化主线程的Handler加载
2016-01-23 20:23:11
346
原创 android 源码剖析之-------ActivityThread的创建过程
当我们第一次启动一个应用程序组件时,如果该应用没有任何组件存在,那么系统首先会创建该应用程序的ActivityThreadActivityThread的创建过程是很复杂的,当程序进程第一次启动时,系统会在主线程中调用ActivityThread的main()方法,从而完成ActivityThread的创建。ActivityThread是什么?网上有很多说法:ActivityThre
2016-01-23 17:12:58
1392
原创 android 支持的序列化-------Serializable和Parcelble
android 支持两种序列化:Serializable和Parcelble。前者是Java语言自带的序列化机制,通过读写文件实现对象的序列化和反序列化;后者是Android Os实现的序列化,它是通过读写内存来实现序列化,从而实现对象的传递。下面,就这两种方式详细说明。SerializableSerializable是Java提供的一个空接口。对象要想实现序列化,只需要如下:pu
2016-01-21 23:33:03
1188
原创 Android源码剖析之-------Handler机制详解
Handler是用来发送并处理消息的,是Android的消息机制的具体实现。一个Handler必须和一个Looper进行关联才能进行消息的发送和处理。Handler所完成的就是将一个操作从一个线程切换到与Handler关联的Looper所在的线程去执行。这个过程中,Looper扮演的是一个消息循环的角色。Looper里有一个MessageQueue,它是负责接收消息和取出消息,Handler负责的
2016-01-21 19:05:34
353
原创 Android源码剖析之------常见Window的创建过程
本文在之前所讲解的Window内部机制的基础上,进一步分析了Activity的Window的创建过程,即Activity的View同Window是如何进行关联,根本还是通过WindowManager完成的。
2016-01-19 22:40:09
344
原创 android 源码剖析之------Window的内部实现机制(添加、删除、更新)
今天,在做项目的过程中,实现了一个浮动窗口的功能,大致思路是这样的:通过实例化一个ImageButton并给这个Button设置监听,然后将这个Button传递给WindowManager的addView方法,在ListView滑动过程中,通过监听ListView的滑动状态,利用WindowManager的updateViewLayout方法,控制浮动窗口的显示和隐藏。功能实现很简单,但是,一直有
2016-01-19 20:55:51
1436
原创 Android MotionEvent事件分发机制源码剖析
最近,心血来潮,花时间研究了以下Android 触摸事件的分发和传递机制,从源码的角度剖析了事件分发和处理的流程,加深了对Android View体系的理解.相信大家和我一样都有过这样的困惑: Android对事件是怎么传递和处理的?我们平时写的回调时如何调用的?其实,源码里面有很完全的介绍.
2016-01-19 18:21:14
598
原创 Android性能优化总结
最近,看完了谷歌有关性能优化的专题课程,找到了Android性能优化的解决方案,同时也丰富了自己的知识。下面,通过渲染、内存、运算和电量几个方面对Android性能优化进行总结,和大家分享。
2016-01-11 17:16:36
319
原创 Android性能优化之渲染
Android性能优化之渲染篇APR 11TH, 2015 | COMMENTSGoogle近期在Udacity上发布了Android性能优化的在线课程,分别从渲染,运算与内存,电量几个方面介绍了如何去优化性能,这些课程是Google之前在Youtube上发布的Android性能优化典范专题课程的细化与补充。下面是渲染篇章的学习笔记,部分内容和前面的性能优化典范
2016-01-11 17:10:16
313
原创 Android性能优化典范
2015新年伊始,Google发布了关于Android性能优化典范的专题,一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App。课程专题不仅仅介绍了Android系统中有关性能问题的底层工作原理,同时也介绍了如何通过工具来找出性能问题以及提升性能的建议。主要从三个方面展开,Android的渲染机制,内存与GC,电量优化。下面是对这些问题和建议的总结梳理。0
2016-01-10 19:04:53
356
原创 学Android两年半的感想
学习Android已经两年半了,感觉个人虽然在技术上有一定的积累,但还需要沉淀,因此,从现在开始,保持每周至少两篇博客,主要包括对Android的一些基础知识的总结和看法。虽然,这类博客多如牛毛,但谨通过这种方式作为提升和沉淀自己的一种方式,给后学这之路,同时和其他同仁交流。
2015-11-02 15:46:40
379
原创 android里的进程和线程
Android的组件运行在各自的进程里,系统会为每个进程创建UI线程,负责事件的分发,UI组件的创建,界面的重绘等工作,同时Android实现UI线程为不安全的,不能在非UI线程里操作在UI线程里创建的UI组件。同时,进程的优先级影响着系统对进程的管理,因此,理解Android进程和线程是十分必要的
2015-11-02 15:31:49
428
转载 Eclipse常用的快捷键
Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)Alt+↑ 当前行和上面一行交互位置(同上)Alt+← 前一个编辑的页面Alt+→ 下一个编辑的页面(当然是针对
2015-10-14 23:26:50
278
转载 android开源项目
转载自:http://blog.youkuaiyun.com/vipzjyno1/article/details/22983641之前转载了一个开源项目的文章,发现那些都是没有系统的总结,这里又转载一篇有系统总结的文章。Android开源项目系列汇总已完成,包括:Android开源项目第一篇——个性化控件(View)篇Android开源项目第二篇——工具库篇
2015-10-14 21:32:15
585
原创 Java集合详解
本文参考Java Tutorial之集合篇,详情参考 http://docs.oracle.com/javase/tutorial/collections/index.html集合是一个统一的框架,很多语言都有,而且大致遵循相同的规范。在Java里, 接口、实现、和集合操作是集合框架的核心。其中,接口定义了基本的操作,主要有两类接口:Collection接口和Map接口,Collect
2015-06-30 20:02:49
309
转载 Http详解
引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。HTTP协议的主要特点可概括如下:1.支持客户/服
2015-05-05 21:02:15
382
深入浅出MFC第二版候俊杰着源码.rar
2011-11-01
LINUX命令、编辑器与SHELL编程.part4.rar
2011-11-01
android 开发套件
2011-09-30
《Android应用开发揭秘》附带光盘代码.
2011-09-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人