View 的事件分发
事件分发的伪代码
1 | boolean dispatchTouchEvent(MomentEvent ev){ |
事件分发的伪代码
1 | boolean dispatchTouchEvent(MomentEvent ev){ |
META-INF/CERT.RSA 是 apk 文件的证书
keytool -printcert -file xxxx
arcTo 方法
在 path 中的arcTo()
方法只画弧形,不画扇形,所以没有 useCenter
这个参数
其中的 arcTo(float left, float top, float right, float bottom, float startAngle,float sweepAngle, boolean forceMoveTo)
中的最后一个参数代表是否将画笔抬起,即强制将画笔的移到圆弧的起点再开始进行绘制
addArc() 方法
这个方法与上一个方法的区别在于没有 forceMoveTo 这个参数,实际上等同于 arcTo(...,true)
方法
当依赖两个库时,这两个库(A,B)中又同时依赖于另一个库(C),如果这个时候 A,B 中依赖的 C 库版本不同,Gradle 会自动使用最新的版本,比如
1 | dependencies { |
ViewModel 类旨在以注重生命周期的方式存储和管理界面相关的数据。ViewModel 类让数据可在发生屏幕旋转等配置更改后继续留存。
1 | private val viewModel = ViewModelProvider(this).get(MyCustomViewModeClass::class.java) |
ReentrantLock,可重入锁,基于 AQS 的机制,实现了公平锁和非公平锁,给开发者提供了一个更为灵活的锁实现,既然是个锁,ReentrantLock 也实现了 Lock
接口
AQS,全称为 AbstractQueuedSynchronizer,是 JUC 包中的一个抽象类,为开发者提供了编写同步锁的机制
其中封装了 FIFO(first in first out) 的队列
简单回顾一下 Java 的中断机制
Java 中的线程 Thread 有以下三个方法
本文基于 JDK 1.8 分析
HashMap 是非线程安全的类,在多线程并发 put 导致 resize,在 transfer 过程中可能导致死锁或者数据丢失
而 ConcurrentHashMap 则是一个线程安全的 Map 类,在 HashMap 的基础上做了线程安全的处理
RxJava is a Java VM implementation of Reactive Extensions: a library for composing asynchronous and event-based programs by using observable sequences.
RxJava 是 Reactive Extensions 的 Java VM 实现:一个使用可观察序列组合异步和基于事件的程序的库。
RxJava 通过观察者订阅被观察者进行事件的分发,并提供了很多被观察者(即事件发送者)的创建方法和事件转换的操作符函数(map、flatmap、filter 等等)