- 博客(33)
- 资源 (2)
- 收藏
- 关注
原创 类的加载_双亲委派_动态代理
某个类加载器在加载类时,首先将加载任务委托给父类加载器,依次递归,如果父类加载器可以完成类加载任务,就成功返回;只有父类加载器无法完成此加载任务或者没有父类加载器时,才自己去加载。指的是:在程序的执行过程中,使用jdk的反射机制,创建代理对象,并动态的指定代理的目标类动态代理的实现方式常用有两种:- 使用JDK代理- 通过CDLIB代理。
2024-03-24 15:35:36
1023
原创 性能优化---启动优化(耗时排查—代码里执行耗时还是布局耗时)
启动状态 应用有三种启动状态,冷启动、温启动与热启动;每种启动状态都会影响该应用向用户显示所需的时间。在冷启动中,应用从头开始启动。在另外两种状态中,系统需要将后台运行的应用带入前台。建议始终在假定冷启动的基础上进行 优化。这样做也可以提升温启动和热启动的性能。 冷启动 冷启动是指应用从头开始启动:系统进程在冷启动后才创建应用进程。发生冷启动的情况包括应用 自设备启动后或系统终止应用后首次启动。 热启动: 在热启动中,系统的所有工作就是将 Activity 带到前
2022-05-29 23:24:20
861
原创 Handler源码的理解
Handler机制:handler->sendMessage // 发送消息 messasgeQueue.enqueueMessage //消息队列存入消息 looper.loop()-> messasgeQueue.next() // 从消息队列取 handler.dispatchMessage()->handler.handleMessage // 处理取出的消息① 创建Handler②创建Message可以直接new Message 但是 Mes...
2022-05-28 00:06:46
131
原创 Arouter 原理:学习和使用(初级)
app.build.gradlecompiler.builder.gradleannotations.builder.gradleMainActivityARouterArouterProcessor注解处理器如下:package com.e.compiler;import com.google.auto.service.AutoService;import java.util.Set;import javax.annotation.processing.AbstractPr...
2022-05-19 20:55:55
484
原创 Gradle
一:在gradle 打印二:在app/build.gradle 中 打印apk 的位置 三 :对象转成 字串class Person { String name Integer age}1 对象----> 字串//对象转成json字符串def list=[new Person(name:'james',age:18), new Person(name:'lilei',age:18)]// 把list 集合转成json 字串pr...
2022-05-18 23:13:43
896
原创 Rxjava 的学习和使用
一:添加依赖二:被观察者接口三:被观察者的实现四:观察接口五:观察者的实现六:被观察者和观察者的绑定一:添加依赖// 依赖RxAndroid 2X 的依赖库// 增加RxJava 2X 的依赖库implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'implementation 'io.reactivex.rxjava2:rxjava:2.0.7'二: 被观察者接口// 抽象层 被观察者public interface
2022-05-18 22:24:15
246
原创 反射与注解
一、什么是反射:(1)Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。本质是JVM得到class对象之后,再通过class对象进行反编译,从而获取对象的各种信息。(2)Java属于先编译再运行的语言,程序中对象的类型在编译期就确定下来了,而当程序在运行时可能需要动态加载某些类,这些类因为之前用不到,所以没有被加载到JVM。通过反射,可以在运行时动态地创建对象并调用其属性,不需要提前在编译期知道运行的对象是谁解释说明:反射 一般/正常情况下
2022-05-18 22:19:29
226
原创 Rxjava 源码学习
一:Observable.create二:Observable.subscribe三:自己写的demo 模拟这个调用过程一:Observable.create Observable.create ( // 自定义source new ObservableOnSubscribe<String>() { @Override public void subscribe(O
2022-05-18 22:18:44
224
原创 AMS的创建和启动,Activity的启动流程
安卓应用启动流程:从开机上电到launcher界面的显示,和点击桌面图标Zygote进程启动SystemServer进程启动startSystemServer()后通过反射会调到 SystemServer的main()一:AMS的创建和启动流程startSystemServer()后通过反射会调到 SystemServer的main(),如下:启动AMSSystemServiceManager的作用:专门管理各种服务启动
2022-02-19 21:49:53
1273
原创 泛型以及通配符
泛型泛型类:class FanxingTest<T>{ }泛型方法:public <T> T fanxingMethod(T...a){ // 泛型方法 return a[a.length/2]; }示例:public class GenericMethod3 { static class Fruit{ @Override public Strin...
2021-04-18 12:13:28
131
原创 线程池和线程
CPU核心数,线程数CPU个数、核心数、线程数的关系:CPU个数:是指物理上,即硬件上的核心数; 核心数:是逻辑上的,简单理解为逻辑上模拟出的核心数; 线程数:是同一时刻设备能并行执行的程序个数,线程数 = cpu个数 * 核数;CPU线程数和Java多线程概念:单个CPU线程在同一时刻只能执行单一Java程序,也就是一个线程 单个线程同时只能在单个CPU线程中执行 线程是操作系统最小的调度单位,进程是资源(比如:内存)分配的最小单位 Java中的所有线程在JVM进程中,CPU调度的
2021-02-15 18:03:49
95
原创 java泛型中 extends 和 super的区别
转自:Java泛型中extends和super的区别?问题:Java 泛型 <? super T> 中 super 怎么 理解?与 extends 有何不同?<? extends T>和<? super T>是Java泛型中的“通配符(Wildcards)”和“边界(Bounds)”的概念。<? extends T>:是指“上界通配符(Upper Bounds Wildcards)” <? super T>:是指“下界通配符(..
2021-02-15 17:26:05
443
转载 java泛型擦除
泛型擦除Java泛型擦除后,能够添加不是泛型类型的元素吗?------答案是可以的,通过反射 泛型擦除后是如何获取泛型信息?-----匿名内部类1 泛型擦除后能否添加非泛型类型的元素?下面看一段代码:public static void main(String[] args) throws Exception { Class c1 = new ArrayList<String>().getClass(); Class c2 = new ArrayLi...
2021-02-15 12:19:16
158
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人