Kotlin Android开发

2020-09-13  本文已影响0人  SamiraG

Kotlin一些特性

参考

https://www.bilibili.com/video/BV1654y1X7Jo?from=search&seid=7649962615194993068
因为最近的项目需要Android开发的基础比较高,准备学习一下kotlin,先学习的是这个视频中的内容,在这里做个笔记。

模块化

模块化的作用

如何实现模块化

模块间的通讯

MVP架构

MVP 全称:Model - View - Presenter

Model 表示数据层,View 表示视图层,Presenter 表示逻辑处理层
在 MVP 模式中

好处:能够有效解耦工程,分为各个独立模块,功能清晰,有利于重复使用,在调试过程中也能够快速定位错误
缺陷:增加代码工作量

https://www.viseator.com/2017/05/25/android_google_mvp/

android_mvp_uml.jpg

技术选型

视图层

业务层

其他

Application与Library

启动

切换

if(xxx.toBoolean()){
    apply plugin: 'com.android.library'
}else{
    apply plugin: 'com.android.application'
}

两套AndroidManifest

AndroidManifest的切换

sourceSers{
    main{
        if(xxx.toBoolean()){
            mainfest.srcFile 'src/main/release/AndroidManifest.xml'
        }else{
            mainfest.srcFile 'src/main/debug/AndroidManifest.xml'
        }
    }
}

android-extensions介绍

Anko

Anko组成部分:

RxJava

下面这个是两个作者写的RxJava2.0的一系列教程
https://maxwell-nc.github.io/categories.html
https://www.jianshu.com/u/c50b715ccaeb

Retrofit

官方网址:https://square.github.io/retrofit/

Dagger2:依赖注入

class ClassB{
    fun sayHello(){
        println("hello")
    }
}
class ClassA{
    var mClassB: ClassB
    init{
        mClassB = ClassB()
    }
    fun doSomething(){
        mClassB.sayHello()
    }
}

依赖注入版:

class ClassB @Inject constructor{
    fun sayHello(){
        println("hello")
    }
}
class ClassA{
    @Inject
    lateinit var mClassB: ClassB

    fun doSomething(){
        mClassB.sayHello()
    }
}

@Component

@Module

@Proivides

Inject和Module维度

上一篇 下一篇

猜你喜欢

热点阅读