我发现了一个现象,在第一次运行的时候,图片显示没有任何问题,都正常,但是只要做了节目切换,好像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)可以解决这个问题不 ?这个构造函数的使用方法我还不太懂,望解答,谢谢!

解决方案 »

  1.   

    你其实只要定义一个Handler,然后在发送Handler的时候,设置message.what的值,这个值是数字,然后在Handler里面接收的时候去判断.what的值,根据不同的值去执行不同的操作。
      

  2.   

    在handler中,用setPostmessage(),以前见有人因为不是用的这个出现相识的问题
      

  3.   

    我现在是需要用到两个handler,因为用what更新UI太麻烦,代码太多,就不知道这样可行不