@小鸟龟吃螃蟹 哈哈哈哈,kotlin炉火纯青
【Kotlin】注解 @JvmStatic一、注解定义 @Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.P...
@小鸟龟吃螃蟹 哈哈哈哈,kotlin炉火纯青
【Kotlin】注解 @JvmStatic一、注解定义 @Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.P...
并没有写重复,一个是val,没有set方法,只有get方法;一个是var,有get方法和set方法
【Kotlin】注解 @JvmStatic一、注解定义 @Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.P...
MMKV MMKV——基于 mmap 的高性能通用 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。github MMKV 是基...
从 API 1 开始,处理 Activity 的生命周期 (lifecycle) 就是个老大难的问题,基本上开发者们都看过这两张生命周期流程图: 随着 Fragment 的加...
一、注解定义 @Target(AnnotationTarget.FIELD)@Retention(AnnotationRetention.BINARY)@MustBeDocu...
@JvmName 一、注解定义 @Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, An...
一、注解定义 @Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.P...
一、注解定义 @Target(AnnotationTarget.FUNCTION, AnnotationTarget.CONSTRUCTOR)@Retention(Annot...
在自定义 View 时,我们经常使用 AttributeSet 自定义一些布局参数。那defStyleAttr 是如何使用的呢? View 的全参构造函数: public V...
很多时候,我们需要给 TextView 增加展开的效果动画,那怎么计算一个没有展示出来的 TextView 的高度呢? 通常得到的方案是(Kotlin代码): val wid...
举个例子:如下的两种 toString() 方法,第一种返回的是 "" 空字符串吗?事实并非如此,它返回的是 "null" 这是为什么呢? 这主要是因为 Kotlin...
现在大多数的网络请求框架都是使用 Retrofit,本篇文章根据 Retrofit 中,Flowable 创建 和 OkhttpCall 执行,来说明 Convert 的...
一、getMeasuredWidth()和getMeasuredHeight() 以 getMeasuredWidth() 方法为例,源码如图1, 其中mMeasuredWi...
taskAffinity 是 Application 和 Activity 的属性。 Activity 的 taskAffinity ,默认为 Application...
线程池主要解决两个问题:1、 当执行大量异步任务时线程池能够提供很好的性能。2、 线程池提供了一种资源限制和管理的手段,比如可以限制线程的个数,动态新增线程等。 线程池体系 ...
AQS(Abstract Queued Synchronizer)是一套实现多线程同步功能的框架。AQS 在源码中被广泛使用,尤其是在 JUC(Java Util Concu...
首先要先了解Java中的锁,这就不得不提synchronized关键字和concurrent 包中的ReentrantLock。 synchronized关键字 synchr...
Java内存模型——JMM(Java Memory Model) 一、为什么要引入Java内存模型? 主要是因为在多线程并发的情况下,由于CPU 优化,导致缓存不一致...
ClassLoader 就是用来加载 class 文件的,不管是 jar 中还是 dex 中的 class。Java的ClassLoader通过双亲委派来加载各自指定路径下的...