Android Jetpack技术入门
zhiwei1990 2019-06-01 10:40 收藏
:fire:Android-Jetpack-Demo
一、项目简介
Android-Jetpack-Demo 是一个简单的、集成当前Google主流Android技术的示例Demo,旨在帮助有需要的初级开发者,快速上手Android新技术、新架构。主要使用
livedata
、lifecycle
、paging
、room
、navigation
、workmanager
、rxjava
、kotlin
、dagger2
以及viewmodel
的MVVM简单架构
代码中都有详细的注释,主要操作演示关注logcat
的日志输出
二、Sample示例
下载体验apk或者手机扫描二维码下载Demo
的apk
包
三、项目组成[^1]
项目主要简单的演示一些android
技术与框架库的入门使用,RxJava
操作符、Kotlin
基本语法,以及JetPack
的组件的简单使用。
Android Architecture Components
RxJava
Kotlin
Dagger2
- Jetpack
lifecycle
livedata
databinding
navigation
paging
room
workmanager
四、规划
- [x] 基础使用入门的代码演示
- [ ] 进阶技术&架构的演示
- [ ] 对应代码的详细博文
- [ ] 其他前沿技术链接
五、示例内容(部分)
Kotlin
语法及部分博文Kotlin
package `in`.zhiwei.jetpack.kotlin
/**
* Kotlin基础语法(一),变量/常量/注释,基础数据类型
* Author: zhiwei.
* Github: https://github.com/zhiwei1990
* Date: 2019/3/17,19:25.
* You never know what you can do until you try !
*/
//<editor-folder desc="kotlin 变量/常量的 类中定义">
/*
Kotlin中的单行、多行、文档注释与Java的注释无区别。
唯一不同的是在kotlin的注释中,多行/文档 注释内,可以且套多行注释。
/*
这个就是多行注释中的多行注释
*/
* 要是在Java中就会报错了。但是他们都能在多行注释中嵌套单行注释
*/
class KotlinSyntax01 {
//类属性的常量/变量的声明及初始化,大体和顶级toplevel中的声明,差不多。
var cA: Int = 10
var cB = 11
val cC = 3.1415926
lateinit var cS: String//不可空
private var cE: String? = null//声明可空,则需要?
//kotlin中class、var、function等默认修饰符不写,就是public,另有 protected、internal、private,类似于Java
//使用by lazy延迟初始化,则必须是val修饰,不可变,引用类型,基础类型不能延迟初始化。涉及到栈 堆
val list: Array<String> by lazy { arrayOf("cdd", "ddd", "dddd", "ddwecd") }
//init 为kotlin中class文件实例化必然调用的函数,不论构造函数有几个,都会调用init的
init {
cE = "null string"
}
//伴生对象,每个类都会有自己个一个伴生对象,不论它实例化多少个对象,这个object对当前类可理解为单例,静态
companion object {
const val PI = 3.1415926
}
}
//</editor-folder>
//<editor-folder desc="kotlin 变量/常量的 Top Level中定义,也就是kt文件根结点定义">
//以下的变量/常量声明,是在kt文件的顶级节点下,根据public,private等修饰权限,对于整个module是有效的。所以
//这里的topLevel中定义的public的变量,在其他kotlin文件中,顶级位置,就不能再次定义同名变量,会冲突。
var a: Int = 7//变量声明变量的标准格式 var name:type = xxx 其中xxx表示直接赋值或者实例化对象
var b = 6//自动推到数据类型,如 6 推断为Int,而 6.0则推断为Double
//kotlin中一切皆对象形式,没有Java中的那种基础数据类型。变量的声明必须初始化,要么null,要么延迟初始化,而且null的对象和非空对象,声明也不一样。
var s1: String? = null
var s2: String? = "abc"//类型后加个?表示这个变量可以为null,见36行
var s3: String = "abc"//上两个还可以s1=null,s2=null,但是s3是不可以的,因为类型是String,而不是String?
lateinit var d: String//如果想要延迟初始化,可以用lateinit关键字修饰,但是?与lateinit不能共用
val str: String by lazy { "sss val str" }//lazy 为高阶函数,延迟初始化,by连接词,但是不能与lateinit共用,且必须是val类型。
val ee: Int = 900//val表示不可变量
fun Test() {
d = "dddf"//延迟初始化的
// ee = 3//不可变量,常量,都是不能修改的。
// s3 = null//这里s3=null的话,编译就会报错
//局部变量,不可变量的声明
val sd = "ss 20010"
var ssa = 10080
}
//Java中不允许在类外定义常量,变量之类的,但是kotlin中可以。Java中一个.java文件只能又一个public的类,但是kotlin中可以有多个。
val lenggth: Int = 100//val 表示不可变量,可以为顶级,类成员,局部不变量。
const val PI: Double =
3.1415926//const 修饰的val,表示常量,必须在top level或者companion object中声明,不能作为普通的类成员常量。其中单例类可以理解为伴生类就是自身的一个kotlin的类
//by lazy 延迟实例化,一个对象只会执行依次初始化
val ccc: String by lazy { "fdf" }
//object 可以理解为一个单例类
object Single {
const val sP = 3.1415926
}
//</editor-folder>
更多详情,请下载代码,内有详细注释,鉴于本人才学有限,若有不足之处,请大神不吝赐教。
六、关于作者
作者本人只是一个,就职于某
知名
(@_@ 有名字的)互联网公司的,技术小白一枚,对于编程有着某种兴趣和热爱,然技术确实渣渣,好读书、不求甚解~~
人之为学有难易乎、为之,则难者亦易矣;不为,则易者亦难矣。
七、关注及反馈
倘若本项目对你有一丝丝的帮助和价值,烦请给个star
,或者有什么好的建议或意见,也可以发个issues
,谢谢!:happy:
[^1]: 项目开发环境为AndroidStudio 3.2.1
+、Jdk8+、Windows10