自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 资源 (1)
  • 收藏
  • 关注

原创 编译Android14 AOSP记录

编译android14 aosp

2024-09-27 16:07:41 3476

原创 线程池解析

ThreadPoolExecutor threadPool = new ThreadPoolExecutor( 5,//核心线程数,即使空闲时也会被保留:建议使用《CPU核心数*2》设置为线程数量 10,//最大线程数量,当任务缓存的超过BlockingQueue时,再次启动指定线程执行任务。 50,//线程空闲下存活多久 TimeUnit.SECONDS,//存活时间的单位 new ArrayBlockingQueue<Runnable>(5),//阻塞队列,任务超过核心线程数后,会

2021-03-13 17:11:03 356

原创 LeakCancary源码分析

if (!LeakCanary.isInAnalyzerProcess(this)) { LeakCanary.install(this); } public static RefWatcher install(@NonNull Application application) { return refWatcher(application) .listenerServiceClass(DisplayLeakService.class) .excludedRefs(Andro

2020-11-15 14:18:53 395

原创 Android事件分发代码流程分析

Android事件传递 Android事件传递流程伪代码 第一步 /** * Activity#dispatchTouchEvent分发事件 */ public boolean dispatchTouchEvent(MotionEvent ev) { //调用PhoneWindow分发事件。->第二步 if (getWindow().superDispatchTouchEvent(ev)) { return true; } //返回false 表示所有View都不处理该事件,交给

2020-10-27 13:37:04 289

原创 自定义View(onMeasure个人理解)

onMeasure方法是View的方法,主要用于测量View大小。onMeasure方法有两个参数,分别是View宽和高的MeasureSpec。 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) MeasureSpec是View中的内部类,是二进制运算,由于int是32位的,用高两位表示mode,低30表示size。 MeasureSpec.getMode(widthMeasureSpec);//通过Me

2020-07-21 14:25:45 303

原创 线程知识点整理

线程的概念 线程和进程的区别 进程:系统分配资源的最小单位,一个进程里最少有个一个线程 线程:CPU调度的最小单位 并发和并行: 线程的启动方式 new Thread Runnable接口 Callable接口 线程的方法 线程的状态 线程安全问题 锁的种类 synchronized synchronized(内置锁)属于可重入锁,默认是非公平锁。 synchronized的缺点 1:获取锁后,无法中断。 2:无法尝试获取锁,取不到时只会一直等待锁。 对象锁与类锁 1:锁某个对象或者当前当前类的实例 2:类

2020-06-02 13:27:38 452

原创 JVM学习笔记(二)

栈:栈中的生命周期是跟随线程,所以一般不需要关注 堆:堆中的对象是垃圾回收的重点 方法区/元空间:这一块也会发生垃圾回收,不过这块的效率比较低,一般不是我们关注的重点 堆内存的划分 GC判断对象存活 引用计数算法:JVM早期使用,相互引用,很难判断是否该回收 可达性分析:GC root 强软弱虚 ...

2020-03-08 22:11:26 217

原创 JVM学习笔记(一)

运行时数据区 线程共享内存区域 方法区(运行时常量池):类信息、常量、静态变量、即时编译期后的代码 堆内存:对象实例(几乎所有对象)、数组 线程私有内存区域 程序计数器:指向当前线程正在执行的字节码指令(CLASS)的地址(行号)。 为什么需要程序计数器?因为Java是多线程,切换线程时需要记录线程所执行的位置,以便于切换回来时可以正常执行。 为什么JVM使用栈? 栈(Stack):出口和入口是一...

2020-03-08 22:11:07 214

原创 Flutter学习(一:Mac配置环境变量)

配置flutter环境变量 下载Flutter SDK flutter官网下载地址 配置Flutter环境变量 打开终端、cd ~(cd到根目录下) touch .bash_profile(在没有.bash_profile时会进行创建) open -e .bash_profile(以文本的形式打开文件) 在打开的文件中添加 export PATH=${PATH}:/xxx/xxx/flutter...

2019-11-28 12:13:50 385 1

原创 Flutter学习(三:方法、异常、类)

方法 可选位置参数

2019-11-28 12:13:36 1839

原创 Flutter学习(二:变量、内置类型、操作符)

变量 Flutter中没有基本数据类型,全部为Object类型,所以未初始化的变量值为null。 Object Object是所有类的基类,Object声明的变量可以是任意类型。int、String、bool等等都是Object类型。 Object obj = "变量"; Object i = 1; i = true; i = "sss"; var var关键字:在声明变量赋值时决定它的类型 (...

2019-11-28 12:13:19 1344

高亮手电筒源码

这是一款高亮手电筒源码,很简单实用,大家一起学习吧

2014-05-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除