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

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

简介

主要会通过安卓实战来讲解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
相关文章
|
1月前
|
前端开发 JavaScript 测试技术
Kotlin教程笔记 - 适合构建中大型项目的架构模式全面对比
Kotlin教程笔记 - 适合构建中大型项目的架构模式全面对比
32 3
|
1月前
|
设计模式 安全 Java
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
|
2月前
|
安全 Android开发 iOS开发
Android vs. iOS:构建生态差异与技术较量的深度剖析###
本文深入探讨了Android与iOS两大移动操作系统在构建生态系统上的差异,揭示了它们各自的技术优势及面临的挑战。通过对比分析两者的开放性、用户体验、安全性及市场策略,本文旨在揭示这些差异如何塑造了当今智能手机市场的竞争格局,为开发者和用户提供决策参考。 ###
|
22天前
|
搜索推荐 Android开发 开发者
安卓应用开发中的自定义控件实践
在安卓应用开发的广阔天地中,自定义控件如同璀璨的星辰,点亮了用户界面设计的夜空。它们不仅丰富了交互体验,更赋予了应用独特的个性。本文将带你领略自定义控件的魅力,从基础概念到实际应用,一步步揭示其背后的原理与技术细节。我们将通过一个简单的例子——打造一个具有独特动画效果的按钮,来展现自定义控件的强大功能和灵活性。无论你是初学者还是资深开发者,这篇文章都将为你打开一扇通往更高阶UI设计的大门。
|
3天前
|
数据采集 安全 API
高级技术文章:使用 Kotlin 和 Unirest 构建高效的 Facebook 图像爬虫
高级技术文章:使用 Kotlin 和 Unirest 构建高效的 Facebook 图像爬虫
|
1月前
|
设计模式 安全 Java
Kotlin - 改良设计模式 - 构建者模式
Kotlin - 改良设计模式 - 构建者模式
|
22天前
|
Java Android开发 开发者
探索安卓开发:构建你的第一个“Hello World”应用
在安卓开发的浩瀚海洋中,每个新手都渴望扬帆起航。本文将作为你的指南针,引领你通过创建一个简单的“Hello World”应用,迈出安卓开发的第一步。我们将一起搭建开发环境、了解基本概念,并编写第一行代码。就像印度圣雄甘地所说:“你必须成为你希望在世界上看到的改变。”让我们一起开始这段旅程,成为我们想要见到的开发者吧!
31 0
|
1月前
|
设计模式 安全 Java
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
45 1
|
2月前
|
Java API Android开发
安卓应用程序开发的新手指南:从零开始构建你的第一个应用
【10月更文挑战第20天】在这个数字技术不断进步的时代,掌握移动应用开发技能无疑打开了一扇通往创新世界的大门。对于初学者来说,了解并学习如何从无到有构建一个安卓应用是至关重要的第一步。本文将为你提供一份详尽的入门指南,帮助你理解安卓开发的基础知识,并通过实际示例引导你完成第一个简单的应用项目。无论你是编程新手还是希望扩展你的技能集,这份指南都将是你宝贵的资源。
83 5
|
2月前
|
前端开发 JavaScript 测试技术
Android适合构建中大型项目的架构模式全面对比
Android适合构建中大型项目的架构模式全面对比
53 2