Android 中建立一个handler 内部类处理多线程
var handler = object: Handler() {
override fun handleMessage(msg: Message) {
super.handleMessage(msg)
toast("2s后执行匿名内部类的toast")
}
}
loginTv.setOnClickListener (object : OnClickListener{
override fun onClick(v: View) {
var runable = Runnable{
Thread.sleep(2000)
handler.sendEmptyMessage(0)
}<pre name="code" class="html">
上述代码可以用lambda简化为下属代码
loginTv.setOnClickListener ({loginTv -> toast("使用lambda")})
loginTv.setOnClickListener ({toast("如果左侧的loginTv没有被使用,那么箭头左侧的参数也可以省略掉")})
loginTv.setOnClickListener (){toast("lambda作为最后一个参数 则可以放在()外部") }
loginTv.setOnClickListener { toast("如果只有一个参数的时候,我们可以把()也去掉") }
runable.run() } }) 然后,,,还可以按照下述规则继续简化
loginTv.setOnClickListener ({loginTv -> toast("使用lambda")})
loginTv.setOnClickListener ({toast("如果左侧的loginTv没有被使用,那么箭头左侧的参数也可以省略掉")})
loginTv.setOnClickListener (){toast("lambda作为最后一个参数 则可以放在()外部") }
loginTv.setOnClickListener { toast("如果只有一个参数的时候,我们可以把()也去掉") }
所以该代码最终可以简化为
<pre name="code" class="html"> loginTv.setOnClickListener {
var runable = Runnable{
Thread.sleep(2000)
handler.sendEmptyMessage(0)
}
runable.run()
}