最新回答 / NullMoneyException
下面有个相同的提问 好像有大神回答了 我不太懂 他的意思是 系统只是限制其他线程更新ui 并不代表其他线程不能更新 限制就得要有监听 多线程会有个问题 没准子线程比主线程先执行了 也就是该控件的监听还没完全启动什么的 就绕过了监听 加了睡眠其实就是让主线程有足够的时间去执行初始 其实一秒还太长了 就这么点代码几毫米都不要 所以被拦截了 就崩了 哈哈 你可以看哪个大神的回答 哈哈 我也不清楚是不是这样
2016-12-25
最新回答 / YYQ_MAX
通过消息发送和接收的方式切换的。子线程(非UI线程)调用handler对象sendMessage(msg)方法,将消息发送给关联Looper,Looper将消息存储在MessageQueue消息队列里面。然后轮巡取出MessageQueue中的消息给UI线程中handler处理,handler得到消息调用handleMessage方法处理消息,从而可以更新Ui。
2016-11-27
已采纳回答 / 攻城狮ZSP
老师讲的方法有点问题,消息开始发送以后,实际上形成了一个消息发送循环,去除原始的消息并不能停止这个循环,要停止这个队,在发送消息的前面加个开关,就行了。代码如下: if(flag){ mainHandler.sendMessageDelayed(message, 1000); } case R.id.stop:flag=false; break;
2016-11-05