handle是发出消息后就自动接收消息的吗? 30

handler.sendMessage(msg);//问题执行完这一句后就自动调用下面的handleMessage(Messagemsg)方法了吗?privateHand... handler.sendMessage(msg);//问题执行完这一句后就自动调用 下面的handleMessage(Message msg)方法了吗?
private Handler handler = new Handler() {//Handler 为Android操作系统中的线程通信工具
public void handleMessage(Message msg) {
//处理游戏结果
if (msg.what == Const.MSG) {
layout.removeView(game);
restart.setClickable(true);
back.setClickable(true);
if(type == 0) {
scoreTextView.setText("成功:" + score/1200.0 +"''");
}else if(type == -1) {
scoreTextView.setText("分数:" + (int)score);
}else {
scoreTextView.setText("挑战失败!!!");
}
}
}

};
那public void handleMessage(Message msg)这个方法什么时候才执行?是要调用这个方法才会执行吗?
还是它自己会自动执行?
展开
 我来答
匿名用户
2015-05-04
展开全部
我的理解:
sendMessage(msg)和handleMessage(msg)分别在两个不同线程中,它们之间通过一个消息队列(MessageQueue)进行通信。
sendMessage(msg)是往队列插入数据 handleMessage(msg)是不断从队列中取出数据进行处理。
你说的是不是执行完sendMessage就立即调用handleMessage,这个不一定
handleMessage(msg)中一般都是比较耗时的操作(所以才要用多线程),sendMessage可能插入了100个数据,handleMessage才处理一个呢。
追问
那public void handleMessage(Message msg)这个方法什么时候才执行?是要有调用这个方法才会执行吗?
追答
Android的handler机制里面还有个很重要的Looper类,这个类的Looper.prepare()会创建一个消息循环(通俗理解就是不断从MessageQueue中取出数据),
Looper.loop()进入消息循环,方法内调用Handler的dispatchMessage(),进而调用handleMessage()
这就是你想知道的handleMessage()方法的调用时机吧~~

这些也是个人理解,其实我对android学习也不多哈~
具体的还是深入地学习一下handler机制,Looper类、消息循环这些知识吧。
深圳市容大彩晶科技有限公司
2024-11-20 广告
作为深圳市容大彩晶科技有限公司的工作人员,对于公司广告机的功能有一定的了解。公司的广告机是否支持多语言显示,具体需根据产品型号和功能配置来确定。但一般而言,现代广告机通常具备多语言显示的功能,以适应不同国家和地区的需求。建议直接查阅产品说明... 点击进入详情页
本回答由深圳市容大彩晶科技有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式