android
文章平均质量分 80
taiyang5946
这个作者很懒,什么都没留下…
展开
-
View的事件分发机制分析
在自定义View中,如果想要你的View能够处理各种屏幕事件,那么事件的分发机制是你必须要知道的,它是事件处理中的重点也是难点,后面将会从源码的角度来分析android中的事件分发。 android的事件分发机制与3个方法密切相关:dispatchTouchEvent(MotionEvent event)、onInterceptTouchEvent(Motion Event event)和onTo原创 2016-02-24 22:22:07 · 276 阅读 · 0 评论 -
深入理解AIDL
在上一篇文章中讲了如何使用AIDL来进行跨进程通信,还没有看过的可以先看看《Binder机制-AIDL的使用》。 继续使用上一篇文章中的示例,我们来看看aidl文件生成的java类。package com.aidl.server;public interface ILoginManager extends android.os.IInterface { public stati...原创 2018-04-11 20:37:52 · 375 阅读 · 0 评论 -
AIDL的入门使用
android中为了能够实现高效率的跨进程通信,实现了一种特殊的IPC(inter-process communication)跨进程通信方式,AIDL(android interface definition language,android接口定义语言),该篇主要以一个示例来讲解aidl在实际开发中如何使用。这里我们以一个登陆为例,调用远端的登录接口,通过callback返回结果。对于...原创 2018-04-11 20:36:17 · 213 阅读 · 0 评论 -
从源码角度理解invalidate()和postInvalidate()的区别
我们知道Android中要触发View的更新,View提供了两个方法invalidate()和postInvalidate(),它们的区别是invalidate()需要在主线程中调用,否则抛出异常,而postInvalidate()可以在子线中调用,那么我们就通过源码来加深对它们的理解吧。查看postInvalidate()的源码:public void postInvalidate() ...原创 2018-04-11 20:33:44 · 492 阅读 · 0 评论 -
AndFix深入源码分析
AndFix是阿里出品的一款轻量级热修复框架,它可以在应用执行期间去修复那些有bug的方法。它的实现思路其实并不复杂,首先它需要通过一个apkpatch工具来将一个有bug的apk和一个已经修复好了bug的apk进行对比,将修复好的方法提取出来,生成一个xxx.apatch文件,该文件实际上是一个压缩文件,它里面包含了修复好的一个.dex文件和该文件的一些描述信息文件META-INF,如图所示...原创 2018-04-11 20:32:21 · 146 阅读 · 0 评论 -
通过源码理解LruCache的实现
LRU的全称是Least Recently Used,表示最近最少使用,它的实现主要是靠内部的一个LinkedHashMap来实现的,它内部维护了一个LinkedHashMap对象集合,所有的数据都是保存在该集合中的。LruCache是内存缓存,默认情况它缓存的数据都是强引用的,如果需要使用在本地磁盘缓存的话,可以使用DiskLruCache来实现。下面通过阅读源码来理解LruCache的...原创 2018-04-11 20:30:01 · 126 阅读 · 0 评论 -
AsyncTask源码分析
AsyncTask是Android提供的一个轻量级的处理UI刷新的类,它提供了在子线程处理耗时任务并在UI线程刷新的功能,它实际上就是一个Handler+Thread,内部封装了这两者便于我们来简单编写UI刷新功能的代码。AsyncTask的使用非常简单:继承AsnycTask类,指定三个泛型参数,实现doInBackground(Result)方法,该方法用来处理耗时操作,会在子线程中...原创 2018-04-11 20:27:44 · 150 阅读 · 0 评论 -
Volley源码分析
Volley是一个轻量级的、适合请求频繁但是请求数据很小的场景的网络请求框架,所以它并不适合文件下载等请求数据量大的情况。Volley是google官方出品的,但是并没有方法到SDK中,它的源码在android源码framework目录下面,必须我下了一个android7.1.1_r28这个分支上的源码,android_7_1_1_r28\frameworks\volley,所以如果需要使用vol...原创 2018-04-11 20:26:20 · 125 阅读 · 0 评论 -
Volley中的缓存策略
Volley实现了对请求响应的结果进行磁盘缓存,这样就不用每次都从服务器上请求数据。Volley的缓存是在DiskBasedCache这个类中实现的,它是在创建请求队列的时候被创建出来的。private static final String DEFAULT_CACHE_DIR = "volley";File cacheDir = new File(context.getCacheDir()...原创 2018-04-11 20:24:14 · 390 阅读 · 0 评论 -
Android中Handler的源码解读
很早之前就Handler的分析,不过感觉有点乱乱的,所以趁着有时间就将其改了改。 Handler是我们android开发中经常使用的一个类,一般我们在子线程中做了耗时操作后使用handler来发送一个消息到主线程中去刷新UI,因为Android要求UI的刷新必须在主线程中来执行,所以使用handler来实现我们的目的是非常方便的。我们一般会使用handler来做刷新UI的操作,但是ha原创 2017-12-02 18:07:06 · 217 阅读 · 0 评论 -
ThreadLocal源码分析
在理解Handler、Looper之前,先来说说ThreadLocal这个类,听名字好像是一个本地线程的意思,实际上它并不是一个Thread,而是提供一个与线程有关的局部变量功能,每个线程之间的数据互不影响。我们知道使用Handler的时候,每个线程都需要有一个looper对象,那么andorid中是怎么保存这个对象的呢,使用的就是ThreadLocal。首先我们来看看主线程中looper是怎么初始原创 2017-12-02 18:03:26 · 134 阅读 · 0 评论 -
AndroidStudio下freeline秒级编译集成
这段时间,随着功能需求的增加,项目代码越来越庞大了,编译出来的apk差不多有50M了,所以这就带来了一个问题,每一次编译的时间都特别长,期间也在网上找了好些方法,不过效果都不怎么显著。不过突然发现Freeline这个东西,感觉很不错的样子,所以就试了试,发现挺好用的,如果你修改的文件不是很多的话,增量编译大概几十秒就搞定了,确实非常的快。 这里就简单说下怎么集成freeline到我们的项目中1、准原创 2017-04-08 12:53:05 · 421 阅读 · 0 评论 -
自定义View入门
一、自定义View步骤在res/values/目录下新建attrs.xml文件,在该文件中定义和我们自定义View相关的属性。在构造函数中获取自定义的属性重写onMeasure()方法获测量自定义View的大小重写onDraw()方法绘制自定义View显示在界面上 二、下面一步一步的演示上面的步骤先上效果图: 1、自定义属性自定义属性时,declare-styl原创 2016-02-24 22:31:00 · 334 阅读 · 0 评论 -
ClassLoader加载机制深入分析
我们知道在java程序中,需要将我们写的java文件编译为class文件才能被使用,一个java程序也是由许许多多的class文件组成。在程序运行的时候是需要将这些class文件加载到内存中才能被我们使用的,而且这些class文件也不是一次性的被加载进内存的,它是什么时候需要就什么时候加载,加载这些class文件到内存中就需要使用ClassLoader类加载器来完成。一般情况下我们不需要关系Cla...原创 2018-04-11 20:42:40 · 3365 阅读 · 1 评论