Kotlin正在高效开发Android应用(4)
1.运算符重载
在Kotlin的世界里,我们可以重载算术运算符,包括一元运算、二元运算和复合运算符。
使用运算符修饰符可以修改具有特定 函数名称的 比如Rx Kotlin的disposable.kt中就有这样的方法。 ? 相当于下面的代码 我们发现,运算符重载之后,代码看起来更加简洁、优雅。 在使用 Kotlin 进行高效 Android 应用开发(一)中,我们引入了一个闭包,可以将其视为简化的 Lambda 表达式。 关于UI控件的点击事件,可以看我同事的文章Kotlin中View.OnClickListener的演变 从原来的Java版本 到Kotlin不断简化,最后变成了: 再次举一个 RxJava 的例子。 如果使用Java lambda来简化,可以这样写。 使用 Kotlin 编写相同的代码更容易。 使用Java的String.format函数时,需要记住%d、%s等转换字符。 Kotlin 可能指的是 Groovy 语法。只需使用 与 Groovy 类似,Kotlin 也有三个双引号来指示多行文本输出。 例如: 完成结果: LiveData 和 Lifecycle 是 Google 2017 年发布的新 Android 架构组件的一部分。 LiveData组件用于存储观察到的数据。它包含组件生命周期信息,并在组件显示为活动状态时提供更新。它通常用于创建响应式用户界面。 生命周期组件用于创建活动和片段,这些活动和片段了解其生命周期并可以根据其状态调整其行为。组件可以经历多种状态——初始化、创建、启动、恢复、销毁。当状态发生变化时,将调用生命周期方法来执行各种操作。 使用Kotlin扩展函数和RxJava函数并引用库https://github.com/YvesCheung/LiveDataToRxJava。 我为LiveData制作了一个扩展库。 github地址:https://github.com/fengzhizi715/LiveDataExtension 主要功能: 例如,在LoginViewModel中,login()函数可以这样写,替换之前使用的RxLifecycle。当然,使用RxLifecycle的目的也是为了避免内存泄漏。由于我们的应用架构中已经使用了Android架构组件,因此我们可以考虑替换RxLifecycle。 Kotlin的很多简化的写法可以提高开发效率,让代码看起来更干净、优雅。 作者:Tony沈哲 函数。这些函数可以是成员函数或扩展函数。
compositeDisposable += RxBus.get().register(PaySuccessEvent::class.java) { getServices() }
复制代码
compositeDisposable.add(
RxBus.get().register(PaySuccessEvent::class.java) { getServices() }
)
复制代码
2。简化的 Lambda 表达式
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
v.setVisibility(View.VISIBLE);
...
}
});
复制代码
view.setOnClickListener {
it.visibility = View.VISIBLE
...
}
复制代码
Observable.just("just a test")
.subscribe(new Consumer<String>() {
@Override
public void accept(String s) throws Exception {
System.out.println(s);
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
throwable.printStackTrace();
}
});
复制代码
Observable.just("just a test")
.subscribe(s -> {
System.out.println(s);
}, throwable -> {
throwable.printStackTrace();
});
复制代码
Observable.just("just a test")
.subscribe(
{ System.out.println(it) },
{ it.printStackTrace() }
)
复制代码
3。字符串操作
${变量名}
即可,简单方便。 var jsonString: String = """
{
"username":"tony",
"password":"123456"
}
"""
println(jsonString)
复制代码
{
"username":"tony",
"password":"123456"
}
复制代码
4。 RxJava 和 LiveData、Lifecycle
fun login(owner: LifecycleOwner): Observable<LoginResponse> {
val param = LoginParam()
param.phoneNo = phoneNumber.value.toString()
param.zoneCode = zoneCode
param.validationCode = verificationCode.value.toString()
return RetrofitManager.get()
.apiService()
.login(param)
.compose(RxJavaUtils.observableToMain())
.bindLifecycle(owner)
}
复制代码
总结
链接:https://juejin.im/post/5b076911f265da0de2575131
来源:掘金❀版权所有商业转载请联系作者授权。非商业转载请注明出处。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。