自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 属性动画源码分析

欢迎使用Markdown编辑器好久没有写博客,因为本身工作的项目里面涉及到很多动画,而里面用到动画基本是属性动画,所以这几天就认真阅读了里面的源码进行分析,话不多说,开讲!使用ObjectAnimator animator = ObjectAnimator.ofFloat(view, "scaleX", 1.0f, 2.0f);animator.setDuration(2000);ani...

2019-05-01 23:50:23 190

原创 OkHttp源码解析(四)

今天讲解的是ConnectIntercepter这个拦截器,这个拦截器从名字上大概都可以知道就是用来获取网络连接的I/O流,建立连接。好,我们现在看看它的intercept()方法:@Override public Response intercept(Chain chain) throws IOException { RealInterceptorChain realChain = (Re...

2018-10-22 22:32:06 197

原创 OkHttp源码解析(三)

上一篇我们讲到拦截器链,还讲解了前两个拦截器RetryAndFollowUpInterceptor和BridgeInterceptor,今天我们要讲解的是CacheInterceptor-----缓存拦截器。首先我们看看它是如何使用缓存的:OkHttpClient okHttpClient = new OkHttpClient.Builder() .cache(new Cach...

2018-10-11 16:32:21 181

原创 OkHttp源码解析(二)

上一篇讲到OkHttp的整体流程,但是里面有一个很重要的方法getResponseWithInterceptorChain还没有讲到,这个方法里面包括了整个okHttp最重要的拦截器链,所以我们今天来讲解一下。Response getResponseWithInterceptorChain() throws IOException { // Build a full stack of int...

2018-10-07 15:22:28 223

原创 OkHttp源码解析(一)

国庆期间,没怎么出去玩,就宅在家里面学习,所以就来研究了一下okhttp的源码。okhttp的github地址:https://github.com/square/okhttp简单使用OkHttpClient okHttpClient = new OkHttpClient.Builder().build();Request request = new Request.Builder() ...

2018-10-06 14:38:42 270

原创 View事件分发机制

距离我上一次写博客已经是大半年的时间了,自己一毕业之后就在做一个很大的项目,一直都没有时间去学习,去沉淀,去积累,感觉这样子的状态是不行的,所以最近又重新开始学习起来。因为我负责的部分有挺多点击,长按,滑动的事件,所以这次就分析一下android里面View的事件分发机制。一、为什么要有事件分发android里面的View都是树形结构的,那么几个view就有重叠在一起的可能性,当我们点...

2018-03-18 22:01:03 182

原创 android接入华为推送

最近公司产品想要提高用户体验,便让我研究一下华为推送的问题。其实推送最重要的就是进程保活的这个问题,这是一个比较棘手的问题。现在比较普遍的做法是集成多个厂商的推送,例如小米,华为,魅族推送等,再加一个另外的第三方推送(个推,极光,信鸽)。今天主要讲的是华为推动接入的一些步骤和问题,而接入的版本是hms 2.5.2.300。1、注册成为华为开发者https://hwid1.vmall.com/CAS/

2017-08-03 11:26:00 17166 3

原创 Android Studio如何使用github和git管理项目

git是一款免费、开源的分布式版本控制系统,用于敏捷高效地管理任何或小或大的项目。而github则是最大的开源社区,里面有全球各式各样的开源项目寄托在上面,因为只支持git作为唯一的格式进行托管,所以叫github。而我们今天要讲的就是如何在Android Studio上使用这两者进行项目管理。1、安装git要在Android Studio里面使用git,首先就要在自己的电脑上安装git,官网地址:

2017-07-19 23:28:58 836

原创 ThreadLocal工作原理

已经有几个月没有写博客了,虽然作为一名菜鸟,但是学习还是要持之以恒的,多写写博客,总结一下自己的学习成果还是不错的。今天,我们就一起来学习一下ThreadLocal吧!说起ThreadLocal,应该大家都觉得有点陌生。确实,在日常的开发中,ThreadLocal用的地方比较少,但是在某些场景下,它是可以完成复杂的功能。例如Android消息机制,Handler和Looper。Handler工作的时

2017-02-17 12:40:56 323

原创 LruCache源码分析

在讲解源码之前,首先我们要知道什么是Lru? LRU是Least Recently Used 近期最少使用算法。它的核心思想就是当缓存空间存满的时候,会优先淘汰那些近期最少使用的缓存对象。我们来看看LruCache的结构:private final LinkedHashMap<K, V> map;/** Size of this cache in units. Not necessarily th

2016-11-05 17:27:24 440

原创 Android四种启动模式

通常在默认的情况下,当我们多次启动Activity的时候,系统就会默认将它们依次放入任务栈,当我们按下返回键的时候,这些Activity就会一一回退,这就相当于出栈。那么系统给我们提供了四种启动模式:standard 标准模式singleTop 栈顶复用模式singleTask 栈内复用模式singleInstance 单实例模式现在我们依次讲解:standard这是系统默认的启动的模式,每

2016-09-15 16:40:41 458

原创 AIDL下Binder的工作机制

Binder

2016-09-08 12:44:28 470

原创 AIDL使用(二)

记得很久之前写过一篇AIDL使用(一),这次写AIDL使用的另外一种情况。我们先看看系统帮我们创建的aidl文件的默认情况是怎样的。void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat, double aDouble, String aString);这里面有int,long,boolean

2016-09-07 16:16:36 356

原创 AsyncTask工作原理解析

因为这是我第一次写源码的解析,说得不清楚或者不正确的还望指正。 线程在android中扮演了很重要的角色,但归根到底就是主线程(UI线程)和子线程。在子线程中不能修改UI控件,而在主线程中又不能做耗时的操作。所以说如果既要做耗时的操作,又要修改UI控件的话,就会显得很麻烦,幸好android封装了这一功能,就是AsyncTask,里面是封装了线程池和Handler。 AsyncTask的调用是n

2016-09-05 23:36:39 324

原创 AsyncTask的使用

AsyncTask是一种轻量级的异步任务类,在线程池中执行后台,然后通知主线程更新UI。其实AsyncTask封装了线程池和Handler。但是AsyncTask不适合进行特别耗时的操作,因为在Android 3.0以后,AsyncTask是串行执行,相当于是在内部的单线程运行。 首先,AsyncTask是一个抽象类,有三个泛型参数,分别是Params,Progress,Result,他们代表的含

2016-08-28 20:10:56 396

原创 Cordova环境安装配置

cordova其实就是一种移动web的框架,它的前身就是PhoneGap。后来PhoneGap捐献给Apache后,抽离出核心代码,就改名为cordova。Cordova支持如下移动操作系统:iOS, Android,ubuntu phone os, Blackberry, Windows Phone, Palm WebOS, Bada 和 Symbian。所以说应用还是很广泛的。但是cordova

2016-08-24 10:34:47 8371 3

原创 Bitmap加载

Bitmap是Android系统中的图像处理的最重要的类之一。通常对于一般小的图片的加载时没有什么问题的,但是如果如果加载比较的大的图片,就很容易发生OOM问题,就是所谓的内存溢出,所以我们就要对图片进行加载管理,就是通过缩放来加载图片。 首先,Bitmap的加载是通过BitmapFactory类提供的一些方法,decodeFile(),decodeResoure(),decodeStream()

2016-08-16 23:23:59 349

转载 DiskLruCache使用

DiskLruCache是Google官方提供的一种磁盘缓存的方案。如果用户每次获取图片都要从网上去获取,这将会非常耗费流量,而且效果也不太好,而DiskLruCache则很好地解决这个问题,只要下载一次,就将这张图片写入磁盘缓存,接下来每次从磁盘缓存中获取就可以了,省时省流量,可惜DiskLruCache暂时还没有写进SDK中,所以只能自己上网去下载源代码放进自己的项目中去。看看它是如何使用的:创

2016-08-04 23:58:11 647

原创 在Html5中与服务器交互

Html5中与服务器交互刚刚涉足职场,上头就要我研究html5,内嵌到手机上,这对我来说完全是一个陌生的领域,不过也正好给自己一个机会来学习,最近做到要跟服务器交互这部分,这部分可是卡了很久,不过最终还是解决了。下面介绍两种方法:ajaxCordova Http首先要说明一点,如果是在PC端上进行交互的话,这就是跨域问题,需要服务器那边进行一些修改,否则的话是不能访问的。我一开始也是在PC端上

2016-07-13 16:18:36 16115

翻译 AIDL使用(一)

IPC的含义是指进程间通信或者跨进程通信,是两个进程之间进行数据的交流,AIDL就是其中一种方式,趁着今天星期六有空闲时间,就学习了一下,顺便做一下笔记。 这分为服务端和客户端两部分,服务器端创建一个Service,接着在客户端绑定这个服务,从而实现通信交互。 根据官方给出的文档,我们需要以下三步:创建aidl文件实现这个接口把这个接口暴露给客户端创建aidl文件 在自己

2016-07-09 12:00:48 275

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除