- 博客(14)
- 收藏
- 关注
原创 View绘制流程及原理
前言 Q:View在什么时候添加到屏幕上的? A: 经过setContentView流程后,将xml文件添加到DecorView Q:DecorView 是什么时候添加到 Window 上的? A:在onResume之后 handleResumeActivity @ActivityThread.java public void handleResumeActivity(IBinder token, boolean finalStateRequest, boolean isForward,String rea
2022-05-25 20:07:58
401
1
原创 Android换肤框架原理解析,实现皮肤随心换
前言 首先须知道系统资源如何加载,怎么拦截并替换资源,以下都有讲解 xml的View怎么解析的 从setContentView进入 一路走到下图这里 找到createViewFromTag 操作几乎都在这里 进入tryCreateView()看看 那么mFactory2在哪里初始化了? 让我们进入oncreate 那么如何拦截系统的创建流程? 直接使用系统的setFactory2方法 public class Factory2Activity extends AppCompatActivi
2022-05-20 08:00:00
1730
3
原创 setContentView流程分析
PhoneWindow的创建 通过在ActivityThreed中performLaunchActivity方法拿到activity 然后再Activity中attach方法new PhoneWindow 然后回到ActivityThreed中performLaunchActivity方法中 mInstrumentation.callActivityOnCreate()执行oncreate 继承 Activity 的流程 PhoneWindow.setContentView — 主要目的 创建 De
2022-05-16 21:55:27
367
1
原创 OKHttp五大拦截器
RetryAndFollowUpInterceptor重试重定向拦截器 重试拦截器在交出(交给下一个拦截器)之前,负责判断用户是否取消了请求;在获得了结果之后 会根据响应码判断是否需要重定向,如果满足条件那么就会重启执行所有拦截器。 重试 重定向(最大次数为20) 响应码 说明 重定向条件 407 代理需要授权,如付费代理,需要验证身份 通过proxyAuthenticator获 得到了Request。 例: 添加 Proxy-Authorization 请求头 401 服务器需要授权
2022-05-14 21:59:11
756
1
原创 OKHttp源码分析
OkHttp介绍 OkHttp是当下Android使用最频繁的网络请求框架,由Square公司开源。Google在Android4.4以后开始将源码中的HttpURLConnection底层实现替换为OKHttp,同时现在流行的Retrofit框架底层同样是使用OKHttp的 优点: 支持Spdy、Http1.X、Http2、Quic以及WebSocket 连接池复用底层TCP(Socket),减少请求延时 无缝的支持GZIP减少数据流量 缓存响应数据减少重复的网络请求 请求失败自动重试主机的其他ip,自
2022-05-11 22:11:32
2431
1
原创 Android 抓包 Fiddler Https443问题
Android 抓包 Fiddler Https443问题 简单的Fiddler配置在这里不说了,可以查到 解决Android 手机App抓包出现443问题 方法一: 把app的targetSdkVersion改为24一下 方法二: 创建xml文件夹,在文件夹下创建xml文件 <?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config > <
2022-05-10 12:06:05
1776
转载 TCP/IP协议
太厉害了,终于有人能把TCP/IP协议讲的明明白白了! 从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,它只是利用 IP 进行通信时所必须用到的协议群的统称。具体来说,IP 或 ICMP、TC...
2022-04-21 17:45:44
5558
原创 热修复之二
什么是字节码插桩 通过在class文件上面修改 就是字节码插桩 使用ASM框架来完成字节码插桩 什么是ASM 它和class的关系相当于json和gson的关系 引入ASM依赖 testImplementation 'org.ow2.asm:asm:7.1'//testImplementation在test中使用 testImplementation 'org.ow2.asm:asm-commons:7.1' 准备待插桩的Class 像创建一个类 public class InjectTe
2022-04-18 21:47:06
323
原创 热修复之一
什么是热修复? 定义:在我们应用上线后出现BUG需要及时修复时,不用再发新的安装包,只需要发布补丁包,客户无感知下修复掉BUG。 怎么进行热修复? 服务端:补丁包管理 用户端:执行热修复 开发端:生成补丁包 热修复解决方案 热补丁方案有很多,其中比较出名的有腾讯Tinker、阿里的AndFix、 美团的Robust以及QZone的超级补丁方案 AndFix 在native动态替换java层的方法,通过native层hook java层的代码。 通过注解来定位方法 public class Te
2022-04-13 21:15:26
2318
原创 组件化之二
前言 有志者,事竟成 APT技术 APT是什么? APT(Annotation Processing Tool) 是一种处理注释的工具,它对源代码文件进行检测找出其中的Annotation,根据注解自动生成代码,如果想要自定义的注解处理器能够正常运行,必须要通过APT工具来进行处理。 也可以这样理解,只有通过声明APT工具后,程序在编译期间自定义注解解释器才能执行。 通俗理解:根据规则,帮我们生成代码、生成类文件 APT中用到的重要元素 ackageElement :表示一个包程序元素。提供对有关
2022-04-06 21:19:37
2301
原创 组件化之一
前言 盛年不重来,一日难再晨。及时宜自勉,岁月不待人 什么是组件化,为什么需要组件化? 早期单一分层模式 问题一:无论分包怎么做,随着项目增大,项目失去层次感,后面接手的人扑街 问题二:包名约束太弱,稍有不注意,就会不同业务包直接互相调用,代码高耦合 问题三:多人开发在版本管理中,容易出现代码覆盖冲突等问题 组件化意义 不相互依赖,可以相互交互,任意组合,高度解耦,自由拆卸,自由组装,重复利用,分层独立化 集成环境/组件环境自动部署配置 抽取公共Gradle 创建config.gradle 编
2022-04-04 21:43:00
1997
原创 Hilt 简单使用篇
引入Hilt dependencies { ... // hilt 依赖导入 implementation "com.google.dagger:hilt-android:2.28-alpha" annotationProcessor "com.google.dagger:hilt-android-compiler:2.28-alpha" ... } buildscript { ... dependencies { ...
2022-03-29 22:18:03
1970
原创 Dagger2简单使用
文章目录前言dagger2的引用简单实用注解实际应用创建物品打包快递员快递接受者单例 前言 想着把学习的东西记录下来,能更好的巩固; 第一次写csdn,相信会越来越好; dagger2的引用 (在build.gradle(Moudle)配置) dependencies { implementation 'com.google.dagger:dagger:2.21' implementation 'com.google.dagger:dagger-android:2.35.1' ann
2022-03-26 18:31:03
3315
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅