
kotlin
BATTERIA
这个作者很懒,什么都没留下…
展开
-
Android自定义Lint检查-CustomLint
仓库地址背景1、大多代码规范都浮于表面,全靠开发自觉和Code Review来保障导致很多遗留的老大难问题。2、基础模块很多规范只能通过注释或者文档来约束。相关文档安卓自定义lint实现LintOption 文档AS Lint支持设计目标开发自定义Lint规则,通过Android Studio提供的Inspections实时检测代码,对不规范的代码进行实时提示。能够实时进行代码规范提示 实现仅对单个模块生效 可以控制提示等级 不增加包体积 不占用过多的系统内存原创 2020-12-10 12:37:14 · 864 阅读 · 0 评论 -
PopupWindow崩溃处理记录
一、Attempt to read from field 'int android.view.ViewGroup$LayoutParams.width' on a null object referencejava.lang.NullPointerExceptionAttempt to read from field 'int android.view.ViewGroup$LayoutParams.width' on a null object reference崩溃堆栈:机型统计:原创 2020-11-11 16:05:16 · 957 阅读 · 0 评论 -
Kotlin-对范型的理解、对比Java
泛型的意义泛型(参数化类型)代码复用。多种类型执行相同代码类型安全,编译器检查类型。泛型的类型在使用时指定,不需要强转。通配符超类型下界限定符? super T 指定类型参数的下限(该类型必须是类型T或者它的父类型)= in子类型上界限定符? extends T 指定类型参数的上限(该类型必须是类型T或者它的子类型) = out无界通配符 ?在Kotlin中强调了生产消费的概念,in是消费,out是生产。// 逆变interface Consumer<in T> {原创 2020-09-18 11:17:28 · 130 阅读 · 0 评论 -
Kotlin-内联相关问题inline、noinline、reified、crossinline
inline意义:函数在运行时都会生成一个对象,很多的小函数意味着额外的开销,使用内联函数则会在编译时进行优化。// examplelock(l) { foo() }inline fun <T> lock(lock: Lock, body: () -> T): T {...}// generatel.lock()try { foo()}finally { l.unlock()}noinline如果希望只内联一部分传给内联函数的 lambda原创 2020-09-18 11:13:41 · 420 阅读 · 0 评论