我发现了一个现象,在第一次运行的时候,图片显示没有任何问题,都正常,但是只要做了节目切换,好像RefreshHandler就不被调用了,因为我用print分别打印play方法中bitmap和RefreshHandler中的bitmap内容,第一次运行,可以正常执行,但切换节目,播放其他节目的时候,好像RefreshHandler内的handler方法并没有被调用,因为system.ou.println并没有打印出预期的内容,这是什么原因呢…?是不是和主线程的handler有什么冲突呢 ?现在初步的怀疑是,因为在每个子线程Image类或则video类里面分别new了handler ,每个handler是跟创建线程绑定的,是不是表示只有第一个new出来的handler是有作用的,以后再new出来的handler就没有作用了 ? //大概思路是这样的 main { handler A } // 子线程更新UI图片类 Image { handler B handler.sendMessage(0); system.out.println("A"); } // 切换到另一个子线程视频类 video { handler C handler.sendMessage(1); system.out.println("B"); } 现在的问题是这样的,我执行到Image类,如果第一遍执行,也就是第一次new handler,程序执行正常,但是后台操作切换节目,把当前画面变成视频节目,这时候在视频子线程中重新new 了一个handler,视频类handler中的代码就不执行了,预期打印的“B”没有出现,打印出的是A的内容,这是什么原因呢 ? 还有就是使用handler的构造函数 handler(looper,callback)可以解决这个问题不 ?这个构造函数的使用方法我还不太懂,望解答,谢谢! |
|
你其实只要定义一个Handler,然后在发送Handler的时候,设置message.what的值,这个值是数字,然后在Handler里面接收的时候去判断.what的值,根据不同的值去执行不同的操作。
|
|
对滴
|
|
60分 |
在handler中,用setPostmessage(),以前见有人因为不是用的这个出现相识的问题
|
我现在是需要用到两个handler,因为用what更新UI太麻烦,代码太多,就不知道这样可行不 |
|
谢谢,我试验一下 |
|
但是如果多个子线程执行有先后怎么办?一个handler能够实现?我测试的不行啊。。 |