博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVP+Kotlin源码体验
阅读量:6148 次
发布时间:2019-06-21

本文共 2064 字,大约阅读时间需要 6 分钟。

大家好,我是苍王。

以下是我这个系列的相关文章,有兴趣可以参考一下,可以给个喜欢或者关注我的文章。

相信有关注我的人,都会看过我第一编介绍的,这是基础编。

我们在官网中查看一下,发现给实际代码量的对比,比Java的MVP还少,看来Kotlin的语法糖优化得很不错。

从文件目录中简单的观察,和Todo-mvp的工程没太大区别,去别就是里面全都都换成了Kotlin文件。

这里引入kotlin 1.1.3-2版本,没有直接介绍使用Android Studio3.0的配置(这个大坑,谁踩谁知道)

根目录的build.gradle设定了配置版本为api26

Api26就是Android O ,已经试验过,Api26,很多接口都有优化修改,如果不用Api26,将无法跑通。

我们继续看看build.gradle中可以使用的改进配置的方式。

useProguard的参数可以配置是否使用混淆

applicationIdSuffix可以用于直接添加后缀到applicationId属性的值后

源码优化分析

1.lateinit

在View声明阶段,都会需要使用lateinit来延迟声明变量。

kotlin中延迟声明还包括lazy的方式

val name: String by lazy {"cangwang"}

lateinit var drwaLayout: drawLayout

区别在于

(1).lazy{} 只能用在val类型, lateinit 只能用在var类型

(2).lateinit不能用在可空的属性上和的基本类型上

lateinit var name: String //会报错

(3).lateinit可以在任何位置初始化并且可以初始化多次,因为其衔接的是var变量。而lazy在第一次被调用时就被初始化,其衔接的是val常量,想要被改变只能重新定义

2.findViewById

Api26前

Api26后

很显然Api26后,优化了方法,可以使用泛型来提示对象类型

3.接下来要介绍五个kotlin Standard.kt里面的函数,apply,with,let,run,also

先介绍apply的作用

其源码

在函数块内可以通过this指代该对象,返回值为该对象自己

with函数

其源码

将某对象作为函数的参数,在函数块内可以通过this指代该对象。返回值为函数块的最后一行或指定return表达式。

let函数

源码

将对象为函数的参数,在函数块内可以通过it指代该对象。返回值为函数块的最后一行或指定return表达式。

run函数

源码

其有两种表达形式

第一种无参数输入。

第二种会将对象本身this给函数调用

返回值为函数块最后一行,或者指定return表达式。

kotlin1.1后 添加了aslo函数

其源码

这张总截图将会让你更加明白如何调用。

其共同点为都能运行函数快,但是四个函数各有差异,大家使用的时候要谨慎选用。

4.Object

单例对象是使用Object声明

Kotlin 没有静态属性和方法,需要使用单例对象来实现类似的功能。

Kotlin 没有静态属性和方法,需要使用单例对象来实现类似的功能。

5.data

相当于java中定义的数据bean类

其可以直接在属性之后编写get()和set()的方法

6.@JvmOverloads

实现 Java 调用中的方法重载

图示重载的是kotlin类的构造方法,其可以初始化的方法如下。

Task task1 = new Task(“cang_wang");

Task task2 = new Task(“cang_wang","程序员");

Task task2 = new Task(“cang_wang","程序员",“1”);

7.通过字节码反编译

可以看到编译后的java字节码

使用Decompile按钮反编译后,可以通过Java的代码逻辑看懂编写的kotlin

这里都是写的是优化点,其他基本语法就不做过多介绍了。

总结

1.Kotlin的MVP的搭建和Java没太大的区别

2.Kotlin提供很多优化的语法

3.进一步了解kotlin编译的原理,有更高效的提高。

这里发一条广告,我创立了一个小密圈。

每天会分享java基础,组件化插件化相关,音视频开源项目分享。

最重要,带有群员们珍贵的分析和点评。

还有最新插件化框架的分析和运用,组件化架构技巧的分享,都尽在这里。

不需要一顿饭的价钱 ,68/一整年的学习资料。

付费是真干货,真正节省时间的通往技术的途径。

来到这里希望影响你的不只是技术提升,而且是人生的架构的导向。

成立两周已经有超过190+的小伙伴加入了我们的行列了,并且持续增加,让我们一起成长,群内还有不定时福利,包括原创书籍的福利哦。

我建立了一个关于Android架构学习的群,里面可以进一步进行组件化学习的交流。

群号是316556016,也可以扫码进群。我在这里期待你们的加入!!!

转载地址:http://ihmya.baihongyu.com/

你可能感兴趣的文章
supervisor进程监控
查看>>
JqGrid
查看>>
下拉框
查看>>
windows下启动和运行分布式消息中间件消息队列 kafka
查看>>
我们应该怎样获得加薪
查看>>
ORACLE错误一览表
查看>>
我的友情链接
查看>>
解密H264、AAC硬件解码的关键扩展数据处理
查看>>
类与类的横向关系
查看>>
centos 零碎学习小记 9.
查看>>
在Struts2的Action中取得请求参数值的几种方法 .
查看>>
【云分析】《“支持和运维服务”仍然困扰着企业云的应用》
查看>>
P1396 营救
查看>>
Zabbix监控指定端口
查看>>
李开复:中国即将迎来IT的黄金时代(转)
查看>>
在指定二级数组中找单词游戏
查看>>
自动化测试之设置浏览器属性来模拟移动设备上的H5的测试
查看>>
到期提醒,阻止上网通告页面教程
查看>>
本报记者 何泉峰 摄
查看>>
ASP.NET中字段赋值问题
查看>>