这里我就不讲kotlin的基础学习啦,网上有一些学习资源,大家可以自行学习研究。

        我是在学完kotlin语法之后,寻思把手里的其中一个Android-java项目更新到kotlin版本,巩固学习,要不很快就忘了。在更新过程中遇到的一些问题做一下记录,方便朋友们遇到类似的问题时做个参考,持续更新中。。。。(项目移植需要时间,自己也是边解决问题边记录,记录过程中遇到那块问题就记录那块啦,没有先后顺序,大家注意下)

1.新建项目

这个部分比较简单,像往常一样建立项目即可,只是到了这一步的时候language选择kotlin即可

2.BaseActivity

这是一个简单的BaseActivity,内容可以根据业务需求添加,这个暂时没什么问题

2.BaseFragment

之前是这么写的,这样会有个问题:实现类中实现initView方法,直接使用控件会报空异常。原因:因为这个时候View还没有与Fragment绑定到一起

解决方案如下:放到onStart()中执行,可以参考fragment的生命周期

具体使用:这样调用是没有问题的,不会再报空指针异常

3.关于内联函数的理解

首先看下方法的调用流程

调用一个方法其实就是一个方法压栈和出栈的过程,调用方法时将栈帧压入方法栈,然后执行方法体,方法结束时将栈帧出栈,这个压栈和出栈的过程是一个耗费资源的过程,这个过程中传递形参也会耗费资源。

为什么要使用内联函数inline

我们在写代码的时候难免会遇到这种情况,就是很多处的代码是一样的,于是乎我们就会抽取出一个公共方法来进行调用,这样看起来就会很简洁;但是也出现了一个问题,就是这个方法会被频繁调用,就会很耗费资源

例如封装公共的启动activity的方法

inline

被inline标记的函数就是内联函数,其原理就是:在编译时期,把调用这个函数的地方用这个函数的方法体进行替换,注意方法体三个字,通俗点说相当于把方法体中的内容(具体代码)复制到了具体使用的地方,是执行代码而不是调用方法

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐