![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习笔记
文章平均质量分 66
日常学习笔记
路上风景独好
安卓小菜鸟
展开
-
Android类加载
某个类加载器在加载类时,首先将加载任务委托给父类加载器,一次递归,如果父类加载器可以完成类加载任务,就成功返回;只有父类加载器无法完成此加载任务或者没有父类加载器时,才自己去加载。因为classloader加载类是找到第一个就返回了,所以我们可以把dex文件插到dexElement数组前边,c. patch+old合并,并反射赋值给pathList的dexElements。DexClassLoader 子类 额外提供的动态类加载器。把出问题的类打包成dex文件。为什么使用双亲委派机制?原创 2022-08-22 13:50:49 · 832 阅读 · 1 评论 -
Android虚拟机
Android应用运行在Dalvik/ART虚拟机,每个应用程序就是一个进程。每个进程都对应一个单独的Dalvik虚拟机实例。Dalvik虚拟机执行的是dex文件。原创 2022-08-18 13:54:20 · 1629 阅读 · 0 评论 -
JVM与垃圾回收
从根找可达 根有 静态变量----》线程栈变量-----》常量池----》JNI(指针)—》内部引用(class对象、异常对象Exception。类加载器)—》同步锁----》内部对象----》临时对象(跨代引用)1、对象头(Mark Word存储对象自身的运行时数据(哈希码、GC分代年龄、锁状态标识、线程持有的锁、偏向线程ID、偏向时间戳)、类型指针、若为对象数组,还应有记录数组长度的数据)常见的JVM实现:Hotspot(Oracle公司)、Zing(C4垃圾回收算法)、毕昇(华为公司)...原创 2022-08-18 13:52:39 · 260 阅读 · 0 评论 -
设计模式——代理,静态代理及动态代理的使用
代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。一般会有三个角色:抽象接口、真实对象、代理对象。真实对象、代理对象都需要继承抽象接口。抽象角色:指代理角色和真实角色对外提供的公共方法,一般为一个接口真实角色:需要实现抽象角色接口,定义了真实角色所要实现的业务逻辑,以便供代理角色调用。也就是真正的业务逻辑再次。代理角色:需要实现抽象角色接口,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。将统一的流程控制都放到代理角色中处理。目的:静态代理在使用时,需要原创 2022-08-15 11:45:46 · 208 阅读 · 0 评论 -
注解与反射学习,文末附kotlin版本的注解反射案例替代(findViewById、OnclickListener、intent自动传参)
Kotlin版本,注意需要在class前边添加annotation,注解默认值需要使用kotlin版本下的类型(AnnotationTarget.TYPE,AnnotationRetention.RUNTIME)Java版本,注意需要使用@interface,注解默认值需要使用java版本下的类型(ElementType.TYPE,RetentionPolicy.RUNTIME)@Repeatable注解用于声明标记的注解为可重复类型注解,可以在同一个地方多次使用。仅用于学习注解、反射相关知识。...原创 2022-08-11 09:57:36 · 657 阅读 · 1 评论 -
泛型学习笔记
泛型,即”参数化类型“,把类型当作参数一样传递。这种参数类型可以用在类、接口、和方法中,分别被称为泛型类、泛型接口、泛型方法。我们一般常用的泛型类型变量:T、E、K、V。泛型的extends用于继承和实现,多实现可以用&拼接,如果实现的是具体的类,如List,需要放在第一的位置,只允许实现一个具体的类。泛型中使用extends,是规定我们的泛型类型的类型范围,如果试图传入一个不相符的类型,将会发生编译错误。super A 代表下界,只允许继承A的超类,下限只能继承到A,A的子类不允许继承了。...原创 2022-08-11 09:47:20 · 63 阅读 · 0 评论