Code Bye

android中多个子线程中定义多个Handler的问题,求解答~

 

我发现了一个现象,在第一次运行的时候,图片显示没有任何问题,都正常,但是只要做了节目切换,好像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的值,根据不同的值去执行不同的操作。
对滴
引用 1 楼  的回复:

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


60分
在handler中,用setPostmessage(),以前见有人因为不是用的这个出现相识的问题
引用 1 楼  的回复:

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

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

引用 3 楼  的回复:

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

谢谢,我试验一下

引用 1 楼 AMinfo 的回复:

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

但是如果多个子线程执行有先后怎么办?一个handler能够实现?我测试的不行啊。。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明android中多个子线程中定义多个Handler的问题,求解答~