摘要:
事件的种类和手势 view的体系结构和事件分发 view和viewgroup的分发流程 解决滑动冲突 注:本文只对单点触摸进行处理,多点触摸我们不进行讨论 1、事件的种类和手势、了解单点触摸 图1 2、view的体系结构和事件分发 首先我们需要了解view与viewgroup之间的关系 (1)vie 阅读全文
摘要:
先来张效果图 public class FlowLayout extends ViewGroup { private int mHorizontalSpacing = dp2px(16); //每个item横向间距 private int mVerticalSpacing = dp2px(8); / 阅读全文
摘要:
volatile特性 可以把对volatile变量的单个读/写,看成是使用同一个锁对这些单个读/写操作做了同步 可以看成 所以volatile变量自身具有下列特性: 可见性。对一个volatile变量的读,总是能看到(任意线程)对这个volatile变量最后的写入。 原子性:对任意单个volatil 阅读全文
摘要:
为什么要用线程池 新启线程需要新建——执行任务——销毁这个过程,我们准备一批线程放在那,当需要执行任务的时候就可以直接拿到线程来用,节约了新建和销毁的过程,提高效率。 线程资源是稀缺而昂贵的,所以我们需要利用线程池统一管理,限制线程数。 创建线程池时各个参数的含义 corepoolsize:线程池的 阅读全文
摘要:
CAS(比较并且交换) 什么是原子操作?如何实现原子操作? 假定有两个操作A和B(A和B可能都很复杂),如果从执行A的线程来看,当另一个线程执行B时,要么将B全部执行完,要么完全不执行B,那么A和B对彼此来说是原子的。 实现原子操作可以使用锁,锁机制,满足基本的需求是没有问题的了,但是有的时候我们的 阅读全文
摘要:
ThreadLocal线程本地变量(副本)——不能用Map代替,因为这样所有线程又会去争夺Map资源,未解决根本问题 多个线程执行时,为了互不干扰资源,因此用到了ThreadLocal。 原理:Thread类里面有一个成员变量ThreadLocalMap,而ThreadLocalMap类里有成员变量 阅读全文
摘要:
死锁 产生的原因: 多个操作者争夺多个资源(操作者>资源数>=2) 拿到资源不放手 争夺资源的顺序不对 危害: 线程不工作了,但是整个程序还是活着的 没有任何的异常信息可以供我们检查 一旦程序发生了发生了死锁,是没有任何的办法恢复的,只能重启程序,对正式已发布程序来说,这是个很严重的问题。 解决方式 阅读全文
摘要:
Dalvik与JVM的区别 Dalvik是Android独有的虚拟机。 Dalvik对比JVM,将JVM里面的栈帧里面的局部变量表和操作数栈合并了。 Dalvik Android2.2版本 JIT(just in time) JIT即使变异,将.dex文件信息读成机器码,但编译好的机器码是临时的而不 阅读全文
摘要:
常量池(存在于方法区)静态常量池运行时常量池 String str = "abc";首先JVM会去常量池里面找是否有"abc"这个字符串的引用,如果有则直接返回常量池中字符串的引用,如果没有则在常量池创建"abc"常量并添加引用 String str = new String("abc")首先JVM 阅读全文
摘要:
判断对象存活: 可达性分析(python使用的是引用记数法)可达性分析:只要你与GC roots有链式关联,则表示对象是存活状态 新生代(eden、from、to)复制回收算法由于大部分对象都会被回收,因此eden、from、to的空间比例为8:1:1当eden区进行垃圾回收的时候,存活下来的对象复 阅读全文