1.kotlin安卓实践课程-构建application


简介

主要会通过安卓实战来讲解kotlin语法和实际应用,本教程设及知识点包括框架模式mvp+mvvm, Databinding(数据绑定框架),Dagger2(依赖注入框架),DeepLink(页面路由框架),Rxjava,RxAndroid(异步操作框架),Retrofit,Okhtttp等,不过本教程重点在kotlin所以这些框架需要了解可自行百度。

针对人群:Android中级以上,kotlin入门


正式开始

都是程序员,直接看代码

/**
 * create by bigman
 * 知识点: 继承 ,init ,lateinit
 */
class App : Application() {

    //因为kotlin中的类定义同时也是构造函数,这个时候是不能进行操作的,
    // 所以kotlin增加了一个新的关键字init用来处理类的初始化问题,init模块中的内容可以直接使用构造函数的参数。
    init {
        instance = this
    }
    //加入注解,标注这个apiComponent是需要注入的
    //lateinit 则用于只能生命周期流程中进行获取或者初始化的变量,比如 Android 的 onCreate()
    @Inject lateinit var apiComponent: ApiComponent
    override fun onCreate() {
        super.onCreate()
        //使用组件进行构造,component注射器注入
        DaggerApiComponent.builder()
                .apiModule(ApiModule())
                .appModule(AppModule(this))
                .build()
                .inject(this)
    }

   //Companion Object中定义的成员类似于Java中的静态成员,因为Kotlin中没有static成员
    companion object {
        lateinit var instance: App
    }
}
语法点1:kotlin继承
class App : Application() {}

kotlin的继承就是在类名后直接调用父类的构造方法,这里的我的的应用入口对象App继承于父类Application

语法点2:kotlin init函数
//因为kotlin中的类定义同时也是构造函数,这个时候是不能进行操作的,
// 所以kotlin增加了一个新的关键字init用来处理类的初始化问题,init模块中的内容可以直接使用构造函数的参数。
    init {
        instance = this
    }

上面代码注释已经说明,因为kotlin的类在定义的同时调用了主构造函数,这个时候不能进行任何操作,所以增加了一个init方法可以对构造函数传入的一些参数进行一些初始化操作,比如我们这里是把当前对象赋值给了instance变量

语法点3:kotlin lateinit
语法点4:定义常量与变量var,val和变量类型ApiComponent
//加入注解,标注这个apiComponent是需要注入的
    //lateinit 则用于只能生命周期流程中进行获取或者初始化的变量,比如 Android 的 onCreate()
    @Inject lateinit var apiComponent: ApiComponent
  1. lateinit可以延迟加载变量,对于非空类型在声明的时候不能赋值的,可以用lateinit修饰,这样可以有效避免空指针,对比学习!!这个符号,这个符号表示当变量为空时会强制抛出空指针,这样显然不是我们想见到的,因为用户是不管你空指针的,他们只知道你的程序异常了。
  2. var用于定义变量,val用于定义常量,代码中apiComponent是一个ApiComponent的变量,:这里的冒号和继承区分一下
语法点5:函数声明
override fun onCreate() {
 super.onCreate()
}

函数定义使用关键字 fun,参数格式为:参数 : 类型
注意:kotlin语句不需要分号结束

语法点6:新建对象

  //使用组件进行构造,component注射器注入
        DaggerApiComponent.builder()
                .apiModule(ApiModule())
                .appModule(AppModule(this))
                .build()
                .inject(this)

kotlin新建对象不需要像java那样调用new,直接调用构造方法就行,比如这里的ApiModule()AppModule(this)

语法点7:伴生对象

//Companion Object中定义的成员类似于Java中的静态成员,因为Kotlin中没有static成员
    companion object {
        lateinit var instance: App
    }

Companion Object中定义的成员类似于Java中的静态成员,因为Kotlin中没有static成员,可用来定义一些常量或者工具方法


欢迎一起交流,有问题加群交流

kotlin实战交流群群二维码.png
上一篇:3.kotlin安卓实践课程-AppModule(Api内容提供模块)


下一篇:5.kotlin安卓实践课程-用kotlin写第一个activity(具体实现)