- 博客(11)
- 资源 (1)
- 收藏
- 关注
原创 线程池解析
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学习(二:变量、内置类型、操作符)
变量 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
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅