![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android 进阶学习
文章平均质量分 93
孙先森i
程序员是一个积累的过程
展开
-
Android 启动优化系列 —— 系统启动流程
Android 启动优化系列第一篇——系统启动流程原创 2022-08-09 22:15:00 · 1138 阅读 · 0 评论 -
Android View绘制流程源码浅析(从源码角度理解为什么子线程不能更新 UI)
一文让你从源码角度彻底理解为什么不能从子线程更新 UI原创 2022-07-08 22:45:00 · 840 阅读 · 1 评论 -
Android 从Java线程到Handler机制源码分析
从 Java 线程、锁机制引出 Android 线程、HandlerThread,再到 Handler 机制、同步屏障机制分析,一文明白其中的原理。原创 2022-06-25 23:46:00 · 692 阅读 · 0 评论 -
Android okhttp源码调用流程分析
okhttp 是一套专门为 JVM、Android 设计的 HTTP 客户端,支持同步阻塞调用和带有回调的异步调用,可以非常简单的在 Android 项目中实现网络请求。那么 okhttp 到底是如何做到异步请求?如何实现 HTTP 协议的?本文将通过简单案例对 okhttp 的主要源码进行解读。原创 2022-05-27 18:30:19 · 336 阅读 · 0 评论 -
Android 文字绘制
Android 文字绘制的一些常见问题:文字单位、文字基线、文字居中、文字贴边对齐、多行绘制、图文混排。原创 2022-05-26 21:07:04 · 1314 阅读 · 0 评论 -
Android Retrofit 源码流程分析(Retrofit 2.9.x 最新版本 附详细流程图)
Android Retrofit源码分析 调用流程 Retrofit如何封装OkHttp的 Retrofit线程切换实现原理原创 2022-05-10 18:29:00 · 1297 阅读 · 1 评论 -
Android进阶学习(12)-- 图片加载性能优化(1)
图片加载性能优化前言Bitmap前言最近自己做了一个app,列表中有大量图片需要加载,毫无任何处理的情况下占用的内存可达250M之上: 所以需要对所有的图片进行优化处理,那么优化主要有以下两个方面:图片加载时优化图片的缓存Bitmap要优化图片,肯定是对大图加载时压缩显示,对图像进行处理就需要利用Bitmap位图;Bitmap是...原创 2020-05-10 15:03:19 · 834 阅读 · 0 评论 -
Android进阶学习(11)-- ViewPager嵌套Fragment懒加载处理
ViewPager嵌套Fragment懒加载处理需要懒加载的情况分析完整代码需要懒加载的情况分析你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。完整代码public abstract class LazyFragment extends Fragment { ...原创 2020-05-10 14:57:04 · 628 阅读 · 0 评论 -
Android进阶学习(10)-- JNI使用(Java 与 C/C++ 互相访问、调用)
JNI 静态注册、动态注册Java相关命令静态注册实现过程动态注册代码实现Java相关命令 javac xxx.java //生成 .class 文件 javah xxx.xxx(全类名) //生成 .h 头文件 javac -h . xxx.java //Java1.8 以上 代替上面两个命令 生成 .class .h 文件 javap -s -p xxx.java //查看类中的字...原创 2020-03-26 11:50:37 · 630 阅读 · 0 评论 -
Android进阶学习(9)-- RecyclerView回收、复用源码浅析
RecyclerView复用、回收源码浅析前言RecyclerView中的容器回收源码流程复用源码流程总结前言RecyclerView,可以理解为是谷歌工程师写的一个自定义View开源给我们用,相比于ListView我个人感觉最大的优点在于代码模块化,RecyclerView源码中的封装的非常到位,将各个功能模块化、解耦,阅读源码、使用起来都更加容易;RecyclerView当然也存在缺点,使...原创 2020-02-29 17:30:40 · 662 阅读 · 0 评论 -
Android进阶学习(8)-- View事件分发、滑动冲突
View事件分发、滑动冲突view事件分发事件分发、拦截、消费单击事件源码分析滑动冲突View事件分发整体流程事件冲突源码分析事件冲突解决办法view事件分发事件分发、拦截、消费在我们的代码中,事件是由 dispatchTouchEvent 负责分发,由 onInterceptTouchEvent 决定是否拦截,最后由 onTouchEvent 消费;单击事件源码分析button.se...原创 2020-02-27 17:54:54 · 258 阅读 · 0 评论 -
Android进阶学习(7)-- AIDL
Android AIDLAIDL是什么AIDL使用AIDL流程分析AIDL是什么AIDL(Interface definition language)是Android中IPC进程间通信的一种实现方式,通俗的来说,一个APP可以通过另一个APP提供的Service进行交互。AIDL使用创建两个APP项目,一个作为客户端client,一个作为服务端,实现以下功能:1.客户端向服务端提交数据...原创 2020-02-22 20:15:57 · 380 阅读 · 0 评论 -
Android进阶学习(6)-- Dagger2
Dagger2依赖注入依赖依赖倒置控制反转(IOC)依赖注入Dagger2Dagger2 是什么Dagger2入门依赖注入依赖依赖倒置软件设计六大原则之一,简称DIP;控制反转(IOC)依赖注入Dagger2Dagger2 是什么可以理解为是实现依赖注入的一种工具Dagger2入门@Inject 1. 标记注解元素 2. 标记构造方法@Module...原创 2020-02-21 19:29:58 · 273 阅读 · 0 评论 -
Android进阶学习(5)-- APT 手写ButterKnief
Dagger2注解基础注解的定义元注解注解属性注解的提取注解与APT注解基础注解的定义自定义注解非常简单,和定义接口很像,只需要在interface前面加一个@即可public @interface AutoTest {}@AutoTestpublic class MainActivity extends AppCompatActivity{ //do somethings}...原创 2020-02-19 17:58:29 · 192 阅读 · 0 评论 -
Android进阶学习(4)-- RxJava 从源码角度学习理解
RxJavaRxJava基础观察者模式装饰者模式背压RxJava的 "冷" 与 "热"RxJava操作符RxJava线程切换RxJava源码浅析RxJava基础在学习RxJava时,我们需要先了解一些基础概念。目前RxJava1.x基本都不在使用,博客内容都以RxJava2.x进行总结。观察者模式观察者模式,是RxJava的核心思想,首先我们装饰者模式背压RxJava的 “冷” 与 ...原创 2020-02-17 18:00:46 · 259 阅读 · 0 评论 -
Android进阶学习(3)-- Android多线程、线程池原理与AsyncTask
Android多线程、线程池原理与AsyncTaskCPU、进程、线程1.CPU核心数和线程数的关系2.CPU时间片轮转机制3.进程和线程并行和并发Android 启动线程1.Thread2.Runnable3.Callablerun() 和 start()的区别Android 关闭线程关闭线程的方法Runnable关闭线程join() 和 yield()线程间的共享和协作synchronized...原创 2020-02-16 12:08:26 · 544 阅读 · 0 评论 -
Android进阶学习(2)-- 反射及动态代理模式
反射及动态代理模式什么是反射Class类获取Class类通过反射获取构造方法通过反射获取方法通过反射获取属性静态代理模式动态代理什么是反射“反射”之中包含了一个“反”字,我们先来看看什么是“正”;一般情况下,我们使用某个类会知道他是干什么的,里面有哪些属性和方法,在使用时对这个类实例化,之后用实例化的对象来操作。反射,则是一开始我们不知道要使用的类是什么,所以不能使用new关键字来实例化,更...原创 2020-02-14 20:27:36 · 485 阅读 · 0 评论 -
Android进阶学习(1)-- Java泛型
Java泛型为什么需要泛型泛型类的定义(类、接口)1. 泛型类的定义2. 泛型接口的定义泛型方法辨析,限定类型变量1. 泛型方法的辨析2.限定类型变量泛型中的约束和局限性1.不能实例化类型变量2.静态域或者静态方法不能引用类型变量,静态方法本身是泛型方法则可以使用3.泛型类型不可以是基本类型,必须使用包装类型4.不可以使用 instanceof 关键字5.不能创建参数化类型的数组6.不能继承Exc...原创 2020-02-14 14:46:18 · 231 阅读 · 0 评论