为了账号安全,请及时绑定邮箱和手机立即绑定

Android面试常客Handler详解

难度中级
时长 2小时 0分
学习人数
综合评分9.30
169人评价 查看评价
9.7 内容实用
9.3 简洁易懂
8.9 逻辑清晰

已采纳回答 / 姜饼小框
成员变量有默认初始化值,int成员变量默认值是0.

已采纳回答 / yjblyl
我的理解是:Looper只是一个轮询器,它不断轮询messageQueue里面是否有消息,没有消息则处于等待状态,如果有消息,就从messageQueue抽取消息,交给Handler去处理。真正处理消息的是Handlerl对象里面的handlerMessage()方法。

已采纳回答 / Jannina
我解释下过程吧:在oncreate中的handler.postDelayed(myRunnable, 1000);为1秒后执行传入的myRunnable中的run方法。。。1秒过去了,然后进入了run()开始更换了图片,又遇到handler.postDelayed(myRunnable, 1000),然后再等1秒,执行本身的run(),像一层一层深入的感觉。

已采纳回答 / lynhao
有两个包一个是util一个是os,别选错了

已采纳回答 / 不逃课
 myThread.handler为空,所以在myThread.start();后面添加Thread.sleep(500);休眠半秒钟 让myThread.handler在run中创建,保证myThread.handler不为空

已采纳回答 / Violetsl
是的 同一个Thread 不能重复start的。<...图片...>Thread在start之前会检查是否已经start过了,如果是就抛出异常。 如果想实现多次点击的效果,不要用Thread改用Runnable接口。

已采纳回答 / JowanXu
参数1和0是要在handler中判断数值,然后进行相关操作的<...图片...>如果只有一个操作的话,就直接发送空消息。

已采纳回答 / qq_JasonLee_0
其实主线程都死掉了留着handler也没用了,引用handler本来就是用来更新主线程的UI的。handler没有生命周期的。

已采纳回答 / 胖鸟
what值,用来区别message的标记在handlermessage中可以使用switch(message.what)来区别

已采纳回答 / 烟雨谣
当应用启动,系统会创建一个主线程。这个主线程负责向UI组件分发事件(包括绘制事件),也是在这个主线程里,你的应用和Android的UI组件发生交互。所以main thread也叫UI thread也即UI线程。其他线程就是非UI线程。非UI线程可以通过Thread+Handler的方式实现在非UI线程发送消息通知UI线程更新界面。

已采纳回答 / Forest_Deer
stop键:如果是按老师的代码写的。将removeMessage(1)中的“1”改成“0”即可。原因:该参数为Message的标识,第一次发送的标识为1;而后因Message message=new Message();默认参数为0;以后的Message标识均为0,故remove“0”;send键:再次点击,会开启一个新的主线程和子线程通信循环。多个循环打印都在logCat上,自然就混乱随机了。

最新回答 / 安卓小伙_
在没有进行判断是否为主线程之前改变UI是可行的

已采纳回答 / Kevin_Cai
停止发送,使用handler的removeMessages()方法,视频中what的值给了1,所以停止不了,应该使用0.
老师告诉你能学到什么?
通过本课程,你将学到: 1、什么是Handler 2、如何使用Handler 3、Handler的原理是什么 4、如何定义一个与线程相关的Handler 5、Android更新UI的几种方式 6、非UI线程真的不能更新UI吗 7、Handler使用过程中遇到的问题

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消