android 消息处理 handler发消息的时候用sendMessage可以,用sendMessageDelayed就出错

左燈右行 左燈右行 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

public class Looper01Activity extends Activity {

private TextView view;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.looper01);

view = (TextView)findViewById(R.id.lp_tv_view);
view.setText("0");

MyThread mt = new MyThread(view);
mt.start();
}

private class MyThread extends Thread{

private TextView v;
private Handler mh;

public MyThread(TextView v){
this.v = v;
}
@Override
public void run() {
super.run();
Looper.prepare();

mh = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
v.setText(msg.what + ""); //会在执行这句话的时候报错
//如果发消息时用的是sendMessage不报错,
//用sendMessageDelayed就会报错
}
};

Message msg = new Message();
msg.what = 3;
mh.sendMessage(msg);
// mh.sendMessageDelayed(msg, 1000); //如果这么发消息就会报错,
// 错误信息是 //android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

Looper.loop();
}

}
}



android不是子线程不能更新UI吗?为什么用sendMessage就可以啊,为什么用sedMessagedelayed发送消息就会报错呢?

...全文

相关推荐

深入理解Android消息处理系统——Looper、Handler、Thread

熟悉Windows编程的朋友可能知道Windows程序是消息驱动的,并且有全局的消息循环系统。而Android应用程序也是消息驱动的,按道理来说也应该提供消息循环机制。实际上谷歌参考了Windows的消息循环机制,也在Android系统中实现了消息循环机制。Android通过Looper   熟悉Windows编程的朋友可能知道Windows程序是消息驱动的,并且有全局的消息循环系统。而Android应用程序也是消息驱动的,按道理来说也应该提供消息循环机制。实际上谷歌参考了Windows的消息循环机制,也在Android系统中实现了消息循环机制。Android通过Looper、Handler来

weixin_38710578

Android Handler消息派发机制源码分析

注:这里只是说一下sendmessage的一个过程,post就类似的 如果我们需要发送消息,会调用sendMessage方法 public final boolean sendMessage(Message msg) { return sendMessageDelayed(msg, 0); } 这个方法会调用如下的这个方法  public final boolean sendMessageDelayed(Message msg, long delayMillis) { if (delayMillis < 0) { delayMillis = 0; } return sen

weixin_38742460

Android中handler使用浅析

本文主要介绍了Android中handler的使用,具有很好的参考价值。下面跟着小编一起来看下吧

weixin_38693192

Android Handler线程间的调度

NULL 博文链接:https://18767136122.iteye.com/blog/1988524

weixin_38669628

用java实现安卓handler消息机制

使用java实现安卓的handler消息机制,支持跨线程通信和发送延迟消息

xgq330409675
评论 3
收藏 已收藏
分享
返回顶部
左燈右行
Android 80,489 成员 91,375 内容