Kotlin
milan-xiao-tiejiang
2015年开始Android App开发,精通Java、Kotlin、c++等Android开发语言,阅读过系统源码及多方Android主流框架,对 vue、flutter等也有一定的认知。
Java方向技术全面,熟练掌握Spring、MySQL等Java Web相关技术,掌握分布式架构体系。
2020年转向c++工程师,重新系统学习c++语法,目前从事清洁服务机器人相关领域。
tip:北京寻求Android、c++职位
展开
-
Kotlin 之 Flow
Flow 库是在 Kotlin Coroutines 1.3.2 发布之后新增的库,也叫做异步流,类似 RxJava 的 Observable、Flowable 等等,所以很多人都用 Flow 与 RxJava 做对比。而Flow 则比 RxJava 简单很多。我们知道 MVVM 中 LiveData 是一个生命周期感知组件,最好在 View 和 ViewModel 层中使用它,如果在 Repositories 或者 DataSource 中使用会有这两个主要的问题:不支持线程切换,其次不支持背压。..原创 2020-10-28 22:45:11 · 753 阅读 · 0 评论 -
最简洁的 Kotlin Mvp封装
这篇重点贴下 Kotlin Mvp 的代码,Kotlin 中 MVVM已经相当盛行了,但处理业务逻辑较多的场景中 Mvp 还是有需要的,废话不多说,直接上代码首先定义统一的IView 接口,定义 BaseView 中的行为,新建BaseView.kt 文件interface IView { fun showToast(msg: String) fun showLoading(color: Int = Color.BLUE, tip: String = " 正在加载中 .....原创 2020-07-17 11:42:00 · 1084 阅读 · 0 评论 -
简单了解 Kotlin 协程
launch - 创建协程 async - 创建带返回值的协程,返回的是 Deferred 类 withContext - 不创建新的协程,在指定协程上运行代码块 runBlocking - 不是 GlobalScope 的 API,可以独立使用,区别是 runBlocking 里面的 delay 会阻塞线程,而 launch 创建的不会...原创 2020-04-15 10:03:09 · 211 阅读 · 0 评论 -
Kotlin中常用的设计模式整理
Kotlin 中设计模式有很多种写法,各有个的好处,这里不是统一工厂模式interface Computer { val cpu: String //增加Factory名字 companion object Factory { operator fun invoke(type: ComputerType): Computer { ...原创 2020-04-14 19:12:35 · 561 阅读 · 0 评论 -
重学Kotlin——元编程
反射KClass和 Java 的 Class 可以看作同一含义,可以通过 .java 和 .kotlin 方法在 KClass 和 Class 之间转化。 ::class 表示获取 class 对象。KCallable和 Java 的 AccessiableObject 一致。Java中构造方法为独立的类型,而 Kotlin 统一作为 Function 处理。Kotlin 把 ...原创 2020-04-13 19:08:51 · 192 阅读 · 0 评论 -
重学Kotlin——扩展函数
以 Toast 为例fun Context.toast(value: CharSequence) = toast { value }fun Fragment.toast(value: CharSequence) = toast { value }fun Context.toast(value: Int) = toastInt { value }fun Fragment.toast...原创 2020-04-13 17:42:05 · 217 阅读 · 0 评论 -
重学Kotlin——内联函数
在Kotlin中,每声明一个 Lambda 表达式,就会在字节码中产生一个匿名类。该匿名类包含一个 invoke 方法,作为 Lambda 的调用方法,每次调用的时候,还会创建一个新的对象。Java 在SE 7之后通过invokedynamic 技术实现在运行期才产生相应的翻译代码,在invokedynamic 首次被调用的时候,就会产生一个匿名类来替换中间码invokedynamic ,后...原创 2020-04-13 17:02:07 · 237 阅读 · 0 评论 -
重学Kotlin——集合高阶函数
map val list = listOf(1, 2, 3, 4) val map = list.map { it * 2 }源码:定义了 map 的扩展函数 mapTo ,mapTo 接受两个参数,第一个参数类型是集合,第二个参数为一个方法 (transform: (T) -> R) ,最终返回一个集合,mapTo中将transform...原创 2020-04-13 15:29:14 · 468 阅读 · 0 评论 -
重学Kotlin——类型系统
Kotlin中可空类型常见的几种空判断?.安全的调用,当一个值存在时,才会执行它的下一步操作?:Elvis操作符,或者合并运算符!!.非空断言,用来保证某个变量不为空,除此之外还有 !is as? 等原理:Kotlin 在方法参数上标注@Nullable,在实现上,采用if..else来对可空情况进行判断,对比Java8的Optional,兼容性、性能更好,开销更...原创 2020-04-11 18:34:09 · 325 阅读 · 0 评论 -
重学Kotlin——代数数据类型和模型匹配
代数数据类型 ADT组合类型。例如,一个类型由其他类型组合而成。常见的代数类型是 和(sum)类型、积(product)类型。ADT是类型安全的。积类型ADT中,积类型的表现形式与乘法非常相似,可以理解为一种组合。和类型比如枚举,和类型是类型安全的,因为它是一个闭环,如上节的Day枚举。也是一种OR关系,要么是SUN,要么是MON,不能同时拥有两种类型。可以利用密闭类对枚举...原创 2020-04-11 17:05:10 · 465 阅读 · 0 评论 -
重学Kotlin——面向对象
类及接口kotlin中除非显示地声明延迟初始化,不然就需要指定属性的默认值。接口可以支持java8类似的默认实现,同时支持抽象属性。class Bird(age: Int) { val weight: Double = 500.0 init { //... } constructor(weight: Double) : this(0) ...原创 2020-04-11 15:36:22 · 135 阅读 · 0 评论 -
重学Kotlin——基础语法
val和varvar代表了varible变量,val是varible+final,当然val引用不可变。两者都可以声明一个类的属性。尽可能的采用val、不可变对象及纯函数来设计程序。高阶函数以其他函数作为参数或返回值的函数可以理解为高阶函数。//定义国家类型data class Country( val name: String, val continient:...原创 2020-04-11 14:33:44 · 157 阅读 · 0 评论