- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第7章Android多线程编程技术
目标领会Android多线程编程思想和基本流程理解Android多线程编程中常用的Handler异步回调机制通过课堂代码实作演示,完成一个具体的能够进行基于Handler线程间通信的Android程序开发
问题引入耗时大的处理(如网络通信、下载、数据库处理)会阻塞主线程,导致用户界面失去响应,当用户界面失去响应超过5秒钟,Android系统会允许用户强行关闭应用程序。较好的解决方法是将耗时的处理过程转移到子线程上,从而避免用户界面(主线程)长时间失去响应。
问题引入案例演示如果案例中程序只有一个主线程,将会发生什么问题?如何解决?阻塞线程把耗时长的循环操作放到子线程中Android有阻止子线程更新由主线程创建的UI组件的机制,这个矛盾如何解决?让子线程循环告诉主线程去更新控件
线程安全与线程不安全Android主线程是线程不安全的。线程安全如果多个线程同时运行一段代码,每次运行结果和单线程运行的结果是一样的,就是线程安全的。线程不安全如果多个线程同时运行一段代码,每次运行结果和单线程运行的结果有可能是不一样的,就是线程不安全的。
异步回调机制——异步同步与异步同步调用:是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用。异步调用:不需要等当前执行的动作完成,就可以继续执行后面的动作。例:如张三需要一份文件还有一个会议要开,他让李四去做文件,如果他一直等到文件写完拿到后才能去开会这就是同步;如果告诉李四你写着,我去开会,这就是异步。
异步回调机制——回调回调被调用方在被调用时也会调用对方。ABA调用B中方法B调用A中方法
异步回调机制——回调classA{ publicvoidmethodA(){ newB().methodB(this); } publicvoidprint(){ System.out.println(这是A的print);}}classB{ Aa=null; publicvoidmethodB(){ a.print(); } publicB(Aa){ this.a=a; } }
Handler异步回调机制Handler类位于android.os包下,负责发送和处理消息。每一个Handler实例都与创建它的线程和一个线程消息队列相绑定。Handler对象Handler对象主线程消息队列N:11:1
Handler异步回调机制Handler异步回调机制子线程通过Handler的方法将消息传递出去,不必等待主线程响应;Android系统将会自动调用Handler对象的消息处理方法处理消息。Handler对象获得并处理消息(主线程)Android系统发送消息(子线程)
Handler异步回调机制
Handler异步回调机制实现思想: 1、主线程创建一个Handler实例,并将其引用交给子线程。 2、当子线程有信息要和主线程沟通的时候就通过该引用把信息放到对应的消息队列中。 3、主线程轮询该消息队列,将消息从队列中取出,用Handler实例的一个指定方法handleMessage(Messagemsg)处理消息并对组件进行更改。
流程设计1、创建一个线程2、该线程每隔一段时间向主线程消息队列传送一个消息3、主线程轮询消息队列,收到消息后,自动调用回调方法处理消息,根据消息携带的数据改变UI组件的图像和位置。
程序开发演示请根据流程设计看具体程序实现。1、创建一个线程 Threadt=newThread(){ //该线程的功能具体实现看2.3 } t.start();
程序开发演示2、该线程每隔一段时间向主线程传送一个消息 Handlerhand=newHandler(Messagemsg){//2.1构造一个子、主线程通信渠道 publicvoidhandleMessage(){//2.2重写回调方法,当主线程收到信息后会自动调 //具体实现看步骤3 } }; Threadt=newThread(){ publicvoidrun(){//2.3重写Threadrun方法实现定时传消息 inti=0; while(true){ i++; Thread.sleep(300);//每隔0.3秒运行一次 Messagemsg=newMessage(); msg.arg1=i;//将i作为控制数据封装到消息中 hand.sendMessage(msg);//把消息发送出去 } }
程序开发演示3、主线程收到消息后,根据消息携带的数据改变UI组件的图像和位置。publicvoidhandleMessag
您可能关注的文档
- 电信移动终端测试-sms分册.pdf
- 【北师大】课时练第19章 生物的生殖和发育 第2节 动物的生殖和发育.pdf
- 【人教】考点04 动物的行为(解析版).docx
- 人教版七年级上册(2024)Unit 7 Happy birthday Section B(3a—3d).pptx
- 【北师大】单元综合检测第15章 动物的运动 - 素养综合检测.pdf
- 【冀少版】八年级上册生物期末测试卷01.docx
- 【人教】八上生物期末预测卷-(原卷版).docx
- 【人教】八上生物默写-第五单元 第一章 动物的主要类型.docx
- 【冀少版】八年级上册生物期末测试卷02.docx
- 【北师大】同步练习6.19.3 植物的生殖方式 同步练习.docx
- 【北师大】同步练习6.19.1 人的生殖和发育 同步练习.docx
- 【人教】考点01 动物的主要类群(一、无脊椎动物)(解析版).docx
- 【北师大】课时练第16章 动物的行为 第3节 动物行为的研究.pdf
- 【北师大】同步练习5.18.2 微生物与人类的关系 同步练习.docx
- 【济南版】第四单元 第四章 生物的遗传和变异 综合检测.docx
- 【北师大】课时练第20章 生物的遗传和变异 第3节 性状遗传有一定的规律性.pdf
- 【北师大】课时练第20章 生物的遗传和变异 第6节 遗传病和人类健康.pdf
- 【北师大】课时练第20章 生物的遗传和变异 第2节 性状遗传的物质基础.pdf
- 【人教】八上生物背诵-第五单元 第四章 细菌和真菌.docx
- 【人教】八上生物期中预测卷-(原卷版).docx
最近下载
- 2024年中国石油东方地球物理勘探有限责任公司秋季高校毕业生招聘270人(甘肃有岗)笔试备考试题及答案解析.docx
- 天马旅游汽车公司管理职责、制度汇编.doc
- 从领导力角度说耿彦波——.ppt
- 唐山介绍PPT(唐山简介经典版).pptx
- 《我的家庭贡献与责任》第一课时小学道德与法治四年级上册PPT课件.pptx VIP
- 保养手册_迈腾b7l使用说明书.pdf
- 2024-2025人教版3三年级数学上册(全册)优秀测试卷(附答案).doc
- (2024年1月)广西各市房屋工程造价指标.doc VIP
- 2022年11月苏州城市学院下半年公开招聘27名管理岗位工作人员笔试参考题库含答案解析.docx
- 2023年义务教育初中英语新课标《英语新课程标准》解读ppt课件.pptx VIP
文档评论(0)