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
- lateinit可以延迟加载变量,对于非空类型在声明的时候不能赋值的,可以用lateinit修饰,这样可以有效避免空指针,对比学习
!!这个符号,这个符号表示当变量为空时会强制抛出空指针,这样显然不是我们想见到的,因为用户是不管你空指针的,他们只知道你的程序异常了。 - 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成员,可用来定义一些常量或者工具方法
欢迎一起交流,有问题加群交流
关注公众号
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
Android RecyclerView使用ItemDecoration刻画时间线/时间轴/时光轴timeline
Android RecyclerView使用ItemDecoration刻画时间线/时间轴/时光轴timeline 在Android开发中时间线/时间轴/时光轴现在很常见,尤其涉及到进度、物流信息、进展和时态发展的图表信息等,时间线/时间轴/时光轴生动表现这一类需求。 在RecyclerView的基础上,我使用ItemDecoration刻画一条在RecyclerView左侧的时间线/时间轴/时光轴。运行结果如图: 在顶部显示一张与众不同的icon,区别表示事件或者进展已经完成。 下面是代码。 RVActivity.java是本例运行的Activity: package zhangphil.test; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.os.Bundle; import android.support.annotation.NonNull; ...
-
下一篇
安卓——之ListView和SQLite数据库写一个联系人
安卓的数据存储分为五大类:SharedPreferences存储、文件存储(内部存储、外部SD卡存储)、SQLite数据显卡存储、 ContentProvider 、网络存储。 SharedPreferences:它是Android提供的用来存储一些简单的配置信息的一种机制,采用XML格式将数据存储到设备中,常应用于存储程序的各种配置信息,如用户名、密码。可应用于登陆的记住密码。 SQLite数据库:是Android自带的一个轻量级数据库。 文件存储:主要就是Java的IO流操作,不过要注意权限的设置。 最近写了一个安卓作业,要实现添加联系人删除联系人查找联系人并进行SQLite数据库操作。 中途踩到了些许坑: 1.数据库中id是自动增长的,而且id一旦创建是不会改变的,这就导致在删除操作时出现点击获取的动态id无法匹配数据库中静态的id以至于从数据库删除数据失败。 2.本人喜欢自定义设计界面分布及色调,但在自定义对话框时,由于对话框最后调用了dismiss()方法销毁视图,导致获取的数据传过去主界面就变成了null数据。 更新坑点:3.这个坑点是等我写完文章的第二天才测试到的。。。就...
相关文章
文章评论
共有0条评论来说两句吧...

微信收款码
支付宝收款码