本文收集各处看到的 kotlin 小技巧及实用点.
Android下实现局域网设备发现与通信
《大话设计模式》之总结
- 对象: 用一组可识别的特性和行为来标识的实体;
类: 具有享用属性和功能的对象的抽象的集合;
属性: 一个方法或一对方法,有 get()\set()调用;
字段: 与类相关的变量, 通常是私有的; - 封装:
每个对象都包含它能进行操作所需要的所有信息. 一般无需对外界公开的方法都应该设置成 private, 这才有利于"封装". 优点: - 减少耦合 - 类内部的实现可以自由地修改 - 类具有清晰的对外接口 PS: 房子, 门
- 继承:
- 子类拥有父类非 private 的属性和功能 - 子类具有自己的属性和功能, 即子类可以扩展父类没有的属性和功能 - 子类可以重写父类的方法 构造方法不能被继承,只能被调用. 优点: - 使得所有子类公共的部分都放在了父类, 使得代码得到了共享, 避免重复 - 可使得修改或扩展继承而来的实现都比较容易 缺点: - 父类变, 则子类不得不变 - 会破坏包装, 父类实现细节暴露给子类 使用场景: 两个类之间是 "is-a" 的关系 PS: 动物 - 猫\狗
- 多态:
注意: - 子类以父类的身份出现 - 子类在工作时以自己的方式来实现 - 子类以父亲的身份出现时, 子类特有的属性和方法不可以使用 PS: 京剧, 儿子替生病的父亲上台唱戏 使用: 为了使子类的实例完全解体来自父类的类成员, 父类需要将该成员声明称抽象的. 实现: 对象的声明必须是父类, 而不是子类, 实例化的对象是子类, 这才能实现多态. 原理: 当方法被调用时, 无论对象是否被转换为其父类, 都只有位于对象继承链最末端的方法实现才会被调用.也就是说, 抽象方法是按照其运行时类型而非编译时类型进行动态绑定调用的.
《第一行代码》(第三版) 之 Kotlin 的总结
- 循环: .. 是左闭右闭
downTo 是左闭右闭 until 是左闭右开
- 类:任何一个非抽象类默认都是不可以被继承的。
- 构造函数:子类的主构造函数调用父类中的哪个构造函数,在继承的时候通过括号来指定。
子类在主构造函数中声明成 val 或 var 的参数将自动成为该类的字段,就会与父类同名的字段冲突。因此,同名的参数前面我们不用加任何关键字,让它的作用域仅限定在主构造函数当中。 子类没有主构造函数只有次构造函数时,继承父类就不需要加括号了。
接口:Kotlin 中允许对接口的定义的函数进行默认实现(JDK 1.8 后也支持)。
函数的可见性修饰符:
- Java: public、private、protected、default
- Kotlin: publi、private、protected、internal
- Java 中默认是 default
Kotlin 中默认是 public
修饰符 | Java | Kotlin
-|-|-
public | 所有类可见 | 所有类可见 |
private | 当前类可见 | 当前类可见 |
protected | 当前类、子类、同一包路径下的类可见 | 当前类、子类可见 |
default | 同一包路径下的类可见 | 无 |
internal | 无 | 同一模块中的类可见 |
Dagger2 超全使用攻略
在 Gradle 中的使用
1 | implementation 'com.google.dagger:dagger:2.4' |
基本使用
1 | public class MainPresenter implements IPresenter { |
1 | // Module |
1 | // 注入器, 被注入的对象(MainPresenter)和注入的类(MainActivity)的桥梁 |
1 | public class MainActivity extends AppCompatActivity implements IView{ |
android 无线调试
使用 Android Wifi ADB 插件
- 安装以上插件,并重启 AS
- 将手机连接至电脑,并确保电脑和手机在同一个网络下
- 打开命令行,输入 adb tcpip 5555
然后就可以进行远程调试了.
android 源码下载及编译
Android 源码下载
1 | mkdir ~/bin |