Kotlin-之路
个人的一些经验积累,开发道路上遇到的一些坑
pureChilder
辽宁科技大学,pureChild
爱好打球,看球;
学到老活到老
展开
-
Kotlin-mvp-Rxjava-dagger2-Retrofit-EasyPermission+Okhttp 项目框架
Kotlin-mvp-Rxjava-dagger2-Retrofit-EasyPermissionKotlin 版 快速搭建 Kotlin + MVP + RxJava + Retrofit + EasyPermission 的框架,方便快速开发新项目、减少开发成本前言前段时间学习了 Kotlin 的一些语法,然后就写了这个项目熟悉一下 Android的官方语言,总体下来,感觉比较爽,相比 Java 而言源代码行数有所减少、方法数也有所减少。所以就搭了一个mvp的框架,来与大家一起分享Kotlin原创 2020-07-30 13:00:38 · 290 阅读 · 0 评论 -
kotlin 解析Delegates 与lateinit之间的差异
The two models are similar, and one predates the other. Delegates.notNull() (api reference) is based on delegated properties and was the original, and later came lateinit (Late Initialized Properties). Neither cover all possible use cases and neither shou.原创 2020-07-29 15:59:10 · 372 阅读 · 0 评论 -
Kotlin object 和 companion object 的区别
一、 object关键字object 关键字可以表达两种含义:一种是 对象表达式 ,另一种是 对象声明。1、对象表达式继承一个匿名对象val textView = findViewById<TextView>(R.id.tv)textView.setOnClickListener(object : OnClickListener { override fun onClick(p0: View?) { Toast.makeText(this@Tes原创 2020-07-28 14:36:25 · 197 阅读 · 0 评论 -
Kotlin 协程 - 协程取消篇
协程的任务的取消需要靠协程内部调用的协作支持,这就类似于我们线程中断以及对中断状态的响应一样。1. 线程的中断我们先从大家熟悉的话题讲起。线程有一个被废弃的 stop 方法,这个方法会让线程立即死掉,并且释放它持有的锁,这样会让它正在读写的存储处于一个不安全的状态,因此 stop 被废弃了。如果我们启动了一个线程并让它执行一些任务,但很快我们就后悔了,stop 还不让用,那该怎么办?val thread = thread { ...}thread.stop() // !!! Depre.翻译 2020-07-27 11:03:53 · 2463 阅读 · 0 评论 -
Kotlin 协程 - 异常处理篇
1. 引子我们在前面一篇文章当中提到了这样一个例子:typealias Callback = (User) -> Unitfun getUser(callback: Callback){ ...}我们通常会定义这样的回调接口来实现异步数据的请求,我们可以很方便的将它转换成协程的接口:suspend fun getUserCoroutine() = suspendCoroutine<User> { continuation -> getUser转载 2020-07-27 10:55:20 · 1604 阅读 · 0 评论 -
Kotlin 常量 静态方法
直接上代码,实例如下 class StaticTestActivity { companion object { val string1 = "string1" val string2= "string2" }}或者 class StaticTestActivity { companion object StaticParams{ val string1= "string1"原创 2020-07-24 13:51:36 · 307 阅读 · 0 评论 -
Kotlin 协程 - 协程启动篇
java初转kotlin 启动线程的写法:val myThread = thread {//do what you want}这个 thread 方法有个参数 start 默认为 true,换句话说,这样创造出来的线程默认就是启动的,除非你实在不想让它马上投入工作:val myThread = thread(start = false) {//do what you want}//later on …myThread.start()协程的启动其实与上面写的thead启动有相似的地原创 2020-07-23 14:10:13 · 589 阅读 · 0 评论 -
Kotlin DSL 的 使用
Kotlin DSL 的强大功能 :Gradle 的配置文件 build.gradle (Groovy),以及前面我们涉及到的Gradle Script Kotlin(Kotlin)、Anko(Kotlin)等,都是 DSL。我们可以看出,使用DSL的编程风格,可以让程序更加简单干净、直观简洁。当然,我们也可以创建自己的 DSL。Android 中使用下面这样的 嵌套DSL 风格的代码来替代 XML 式风格的视图文件 UI { // AnkoContext转载 2020-07-23 10:35:37 · 729 阅读 · 0 评论 -
kotlin- let,apply,with,run区别
let首先let()的定义是这样的,默认当前这个对象作为闭包的it参数,返回值是函数里面最后一行,或者指定return代码示例:applyapply函数是这样的,调用某对象的apply函数,在函数范围内,可以任意调用该对象的任意方法,并返回该对象代码示例:withwith函数是一个单独的函数,并不是Kotlin中的extension,所以调用方式有点不一样,返回是最后一行,然后可以直接调用对象的方法,感觉像是let和apply的结合。代码示例:runrun函数和apply函数很像,只不过转载 2020-07-21 11:43:39 · 217 阅读 · 0 评论 -
Kotlin优势总结
简洁大大减少样板代码的数量/* 使用一行代码创建一个包含getters、 setters、 equals()、 hashCode()、 toString() 以及 copy() 的 POJO:*/data class Customer(val name: String, val email: String, val company: String)// 或者使用 lambda 表达式来过滤列表:val positiveNumbers = list.filter { it > 0 }//原创 2020-07-21 11:41:11 · 396 阅读 · 0 评论 -
Kotlin使用 arrayOfNulls 遇到的坑
当遇到固定长度的数组,但是值不确定的时候我们使用 arrayOfNulls 来创建数组代码如下:val strings = arrayOfNulls(size)以下是官方文档关于array的说明,https://kotlinlang.org/docs/reference/basic-types.html#arrays当我给array赋值的时候我开始使用了下面代码来赋值:strings[i] = “123456”当我把string array数组里面的值再次打印出来的时候显示:[null]于原创 2020-07-21 11:40:21 · 2076 阅读 · 0 评论 -
Kotlin协程
什么是协程?官方描述:协程通过将复杂性放入库来简化异步编程。程序的逻辑可以在协程中顺序地表达,而底层库会为我们解决其异步性。该库可以将用户代码的相关部分包装为回调、订阅相关事件、在不同线程(甚至不同机器)上调度执行,而代码则保持如同顺序执行一样简单。协程就像非常轻量级的线程。线程是由系统调度的,线程切换或线程阻塞的开销都比较大。而协程依赖于线程,但是协程挂起时不需要阻塞线程,几乎是无代价的,协程是由开发者控制的。所以协程也像用户态的线程,非常轻量级,一个线程中可以创建任意个协程。协程很重要的一点就是当转载 2020-07-21 11:38:34 · 244 阅读 · 0 评论