一、自定义Toast ①、在layout文件夹下创建自定义的Toast布局文件 ②、创建自定义Toast的java文件,继承Toast类 ③、编写MyToast代码,如下: 扩: ④、调用
二、子线程修改UI
如下代码: xml: java:
运行报错: Only the original thread that created a view hierarchy can touch its views
1、在‘课下Android–>线程UI阻塞及优化’中提到:
2、why?
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机制