ViewModel 原理
ViewModel 类旨在以注重生命周期的方式存储和管理界面相关的数据。ViewModel 类让数据可在发生屏幕旋转等配置更改后继续留存。
如何使用
1 | private val viewModel = ViewModelProvider(this).get(MyCustomViewModeClass::class.java) |
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 等等)
在 Android 中,使用 Handler 主要用于不同线程间的通信
本文基于 Target 30 的 Android 源码进行分析
Android 中 view 的测量机制