一、自定义Toast
①、在layout文件夹下创建自定义的Toast布局文件
②、创建自定义Toast的java文件,继承Toast类
③、编写MyToast代码,如下:
扩:
④、调用
二、子线程修改UI
运行报错:
Only the original thread that created a view hierarchy
can touch its views
1、在‘课下Android–>线程UI阻塞及优化’中提到:
3、how?
既要保证效率又得保证安全,采取折中的操作——->handler消息队列机制
在UI线程中创建handler,当子线程要修改UI时,通过handler给UI线程发消息,说明我要修改UI,并把要修改的值一并发送给UI,UI中的handler接收到后可进行修改。
代码如下:
①、UI线程(主线程)创建handler
②、在子线程中通过handler发送消息
③、接收(在之前声明handler的代码中采用匿名对象的方式)
4、优化
在3.②中每次循环都会new一个Message对象,会产生大量垃圾
优化:
5、扩展—->进度条显示
xml:
java:
线程:
与上例相同
匿名内部类:
通过handler消息队列机制能够实现进度条,但是
线程:
进度条在子线程直接修改也是能够实现进度,原因在于Android在setProgress方法里已经实现了handler机制