Kotlin目前已经转正,成为 Android 开发一级语言,前段时间不忙,将毕业设计用Kotlin 进行重写。
毕业设计 Java 版:https://blog.csdn.net/qq_29375837/article/details/82657976
毕业设计Kotlin 版:https://github.com/stevenwsg/XSYBBS/tree/kotlin
下面罗列一下项目中的重点:
1、使用RxJava 和 扩展函数 代替 Handler 实现消息转发 :
//BaseActivity
open class BaseActivity : AppCompatActivity(){
........................
//处理异步消息
open fun msgManagement(message: Int){
}
}
//扩展函数
//使用rxjava 代替Handler 立刻发送消息
fun BaseActivity.sendMessage(m : Int){
Observable
.empty<Any>()
.observeOn(AndroidSchedulers.mainThread())
.doOnComplete({ msgManagement(m) })
.subscribe()
}
//使用rxjava 代替Handler 延迟发送消息
fun BaseActivity.sendMessageDelayed(m :Int ,d : Long){
Observable
.timer(d, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.doOnComplete { msgManagement(m) }
.subscribe()
}
2、使用Kotlin Anko 实现后台线程和主线程之前的转换:
doAsync {
...................
// 这部分执行在后台线程
uiThread {
...................
//这部分执行在UI线程
}
}
})
}
3、使用kotlin android extensions省略findViewById()模板代码:
import kotlinx.android.synthetic.main.activity_feedback.*
class FeedBackActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_feedback)
bt_back.setOnClickListener { saveFeed() }
}
......
}
4、Toast 扩展函数,后来发现Anko库里面提供Toast 扩展
fun BaseActivity.toast(s : String){
Toast.makeText(applicationContext,s,Toast.LENGTH_SHORT).show()
}
fun BaseFragment.toast(s : String){
Toast.makeText(activity!!.applicationContext,s,Toast.LENGTH_SHORT).show()
}
总的来说:
1、kotlin 刚开始熟悉的时候还是有一些别扭的地方,比如,延迟初始化的属性判空前必须先判断是否进行初始化,这对 Java 程序员来说还是需要适应的。
2、Kotlin 能大大减少模板代码,不管是实体类还是各种监听事件,写起来非常舒服。
3、JetBrains 开源的 Kotlin Anko 封装了一系列 日常操作,写起来非常j简约。
源码:https://github.com/stevenwsg/XSYBBS/tree/kotlin