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
plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' } android { namespace 'com.example.qrtopicture' compileSdk 33 defaultConfig { applicationId "com.example.qrtopicture" minSdk 24 targetSdk 33 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { useSupportLibrary true } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion '1.3.2' } packagingOptions { resources { excludes += '/META-INF/{AL2.0,LGPL2.1}' } } } dependencies { implementation 'com.google.zxing:core:3.4.1' implementation 'com.google.zxing:android-core:3.3.0' implementation 'com.google.zxing:android-integration:3.3.0' implementation 'androidx.appcompat:appcompat:1.4.0' implementation 'androidx.core:core-ktx:1.8.0' implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' implementation 'androidx.activity:activity-compose:1.5.1' implementation platform('androidx.compose:compose-bom:2022.10.00') implementation 'androidx.compose.ui:ui' implementation 'androidx.compose.ui:ui-graphics' implementation 'androidx.compose.ui:ui-tooling-preview' implementation 'androidx.compose.material3:material3' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' androidTestImplementation platform('androidx.compose:compose-bom:2022.10.00') androidTestImplementation 'androidx.compose.ui:ui-test-junit4' debugImplementation 'androidx.compose.ui:ui-tooling' debugImplementation 'androidx.compose.ui:ui-test-manifest' }帮我看看
06-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值