随笔 - 632  文章 - 17  评论 - 54  阅读 - 92万
03 2020 档案
Android使用AnnotationProcessor模仿ButterKnife
摘要:一、概述 在之前的一篇文章中,我们用反射实现了ButterKnife。但使用反射实现ButterKnife性能会受损。这一节我们使用AnnotationProcessor来实现一个ButterKnife(仅实现bindView作参考),在代码编译之前生成辅助类来帮助我们去掉繁琐的findViewBy 阅读全文
posted @ 2020-03-21 23:49 飘杨...... 阅读(1232) 评论(0) 推荐(0) 编辑
Android自定义Gradle插件
摘要:一、概述 当前开发一个Android项目必定会用到gradle插件(不管你想不想其实都在用)。上一节我们说了app的打包流程,其实主要是为接下来要说的内容做铺垫。打包流程大致分为:aapt把资源文件生成R.java文件,JavaCompiler把java文件编译成class文件,dex工具又把cla 阅读全文
posted @ 2020-03-20 00:35 飘杨...... 阅读(2398) 评论(1) 推荐(1) 编辑
App打包流程概述
摘要:一、概述 什么是App的打包流程? 答:App的打包流程是指通过把资源(图片、文本)、源代码等资源打包成一个apk的过程。 了解打包流程能干什么事情? 通过了解打包流程我们可以对app打包的过程进行干涉,例如:1.在热更新项目中我们可以干涉R.java中资源id的生成来防止宿主App和插件App资源 阅读全文
posted @ 2020-03-19 16:42 飘杨...... 阅读(2119) 评论(0) 推荐(0) 编辑
Handler、Looper、MessageQueue原理分析
摘要:一、概述 Android的消息机制是指Handler的运行机制,Handler的运行需要底层的MessageQueue和Looper的支撑。我们在开发中使用Handler一般是切换线程更新UI等操作。因为Android规范规定Android只能在主线程中更新UI,这一点可以在ViewRootIml的 阅读全文
posted @ 2020-03-16 23:09 飘杨...... 阅读(437) 评论(0) 推荐(0) 编辑
ThreadLocal原理分析
摘要:一、概述 简单点来说ThreadLocal其实是一个数据存储类,通过get(),和set(key)来实现对数据的存取。并且可以在指定的线程中存储取数据,而在这个线程中存储的数据对于其他线程是访问不到的。 什么情况下比较适合使用ThreadLocal来存取数据? 答:当数据的作用域是线程或者不同的线程 阅读全文
posted @ 2020-03-16 12:29 飘杨...... 阅读(188) 评论(0) 推荐(0) 编辑
Android so加载原理
摘要:一、概述 本节介绍一下so的加载原理,促使我写这个小节的原因有两点: 1.可以在给App瘦身的时候提供参考依据 2.可以给so插件化提供参考依据 下面就开始看so的加载原理吧。 二、so加载原理分析 2.1.so的编译类型 在Android中只支持三种CPU架构:x86体系、mips体系、arm体系 阅读全文
posted @ 2020-03-15 21:54 飘杨...... 阅读(1424) 评论(0) 推荐(0) 编辑
HashMap原理分析(含1.8以后的红黑树)
摘要:一、概述 HashMap这个类不管是Java开发还是Android开发都会经常用到,当有数据需要通过键值对的形式存储的时候,使用Map会非常的方便。为什么要学习HashMap的原理呢?其中有两点原因: 1.通过对HashMap原理的学习,可以修炼开发者的内功,因为一旦理解的HashMap等于把数据结 阅读全文
posted @ 2020-03-15 17:02 飘杨...... 阅读(1588) 评论(0) 推荐(0) 编辑
TCP三次握手和四次挥手
摘要:一、概述 TCP的三次握手和四次挥手是一个老生长谈的问题,当然也是在面试中被问到的一个大概率的问题。之所以被经常问到是因为这个知识点是可以区别初级、中级、高级开发者的一个分水岭,可以达到筛选应聘者的目的。另外原因是公司可能真的会用到这方面的内容,例如:有些时候我们会选用websocket作为数据传输 阅读全文
posted @ 2020-03-14 16:37 飘杨...... 阅读(381) 评论(0) 推荐(0) 编辑
ButterKnife原理以及源代码分析
摘要:一、概述 相信绝大多数Android开发都用过ButterKnife这个框架,因为其老牌且知名。其通过注解来绑定视图,把开发从烦琐的findViewById中解放出来。 ButterKnife有两种实现形式: 1.使用注解编译器来实现,其结果就是编译略微耗时,但其运行基本无损。 2.完全使用反射来实 阅读全文
posted @ 2020-03-12 22:08 飘杨...... 阅读(1299) 评论(0) 推荐(0) 编辑
Android Service启动原理分析
摘要:一、概述 Service是Android的四大组件之一,我们可以利用它开启一个后台服务,Service的优先级比较高,一旦其在后台运行即使App处于后台则Service运行的任务也不容易被杀死。了解Service的工作原来除了可以加深对底层的Service机制的理解以外还可以为当前比较流行的热更新做 阅读全文
posted @ 2020-03-12 11:15 飘杨...... 阅读(1268) 评论(0) 推荐(0) 编辑
线程池原理分析
摘要:一、概述 众所周知Android中可以使用线程池来管理线程,有非常多的框架一旦涉及到多线程都会优先采用线程池来处理线程,例如:EventBus、Retrofit2、RxJava、OkHttp等框架。那么Android为什么能使用线程池呢?其实这源于Java的java.util.cuncurrent包 阅读全文
posted @ 2020-03-11 20:17 飘杨...... 阅读(406) 评论(0) 推荐(0) 编辑
仿EventBus做一个简单的基于订阅发布的事件总线
摘要:一、概述 在上一节分析了EventBus的源代码。本节仿照EventBus自己做一个事件总线框架,去掉了一些代码,只保留了核心框架,旨在梳理框架的框架原理,加深对框架流程的理解。 在贴出源代码之前先把这个自定义的EventBus的功能介绍一下。核心流程还是三个,注册、发布、取消注册(未写Annota 阅读全文
posted @ 2020-03-11 16:57 飘杨...... 阅读(416) 评论(0) 推荐(0) 编辑
EventBus原理以及源代码分析
摘要:一、概述 EventBus是一个基于观察者模式的发布/订阅事件总线框架。将事件的发送者和接收者分开,其可以简化组件之间的通讯,相对于BroadcastReceiver其更轻量级也更易用。 二、用法介绍 EventBus的用法非常的简单,大致上就四步: 1.注册事件 @Override protect 阅读全文
posted @ 2020-03-10 23:51 飘杨...... 阅读(629) 评论(0) 推荐(0) 编辑
Android从点击Launcher图标开始到App打开流程分析
摘要:一、概述 从我们在屏幕上点击一个App快捷图标开始到app打开到启动页不过短短的500~1500毫秒之间。但是在这个过程的底层却做了非常多的事情,光大步骤就分了7步。其中AMS在这里面占据了非常重要的角色,基本上每一步都离不开他。 有些同学可能有疑问,了解这些东西有啥用啊?作用还是很大的,比如:我们 阅读全文
posted @ 2020-03-10 17:15 飘杨...... 阅读(3129) 评论(0) 推荐(1) 编辑
使用LruCache和DiskLruCache手写一个ImageLoader
摘要:一、概述 在分析OkHttp3的缓存机制之前先手写一个实现了三级缓存的ImageLoader来整体感受一下LruCache和DiskLruCache的用法。本例实现了三级缓存,利用LruCache实现内存缓存,利用DiskLruCache实现磁盘缓存。整体的流程是:当用户请求一张图时,首先检查内存中 阅读全文
posted @ 2020-03-02 11:55 飘杨...... 阅读(419) 评论(0) 推荐(0) 编辑

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示