- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE
第 PAGE 2 页 共 NUMPAGES 2 页
实验八 线程与消息处理
1. 实验目的
掌握Android多线程程序设计方法。
实验内容
(1)阅读和理解各代码段;
(2)上机实现例7.1~7.6。
实验要求
(1)掌握线程的创建和线程通信的消息传递机制。
(2)掌握使用AsncTask实现线程通信的方法。
实验步骤
(1)上机实验例7.1
1)新建项目Demo07_01,选择空白模板。
2)程序中创建一个计时器线程,并通过LogCat窗口输出计时结果,程序代码如图8-1,程序界面设置两个按钮,分别用于暂停计时和继续计时,程序代码如图8-2。
图8-1
图8-2
3)运行及查看结果
点击“继续计时”后点击“暂停计时”,LogCat窗口的信息如图8-3。再点击“继续计时”,程序退出。
图8-3
(2)上机实验例7.2
1)新建项目Demo07_02,选择空白模板。
2)使用相对布局,在主界面添加两个按钮,两个TextView,如图8-4。
图8-4
2)创建一个计时器线程,将计时结果显示在调用的TextView对象上,代码如图8-5,选择View.post(Runnable)方法从非UI线程访问Android UI toolkit,使得计时操作在独立线程中完成,UI线程对TextView进行操作。
3)运行及查看结果。点击按钮“继续计时”后的显示结果如图8-6。
图8-5
图8-6
(3)上机实验例7.3
1)新建项目Demo07_03,选择空白模板。
2)参考教材完成代码,演示线程间的消息机制,如图8-7。
图8-7
3)运行及查看结果。运行结果如图8-8。
图8-8
4)分析与小结:一个Handler对象可以处理多个发送过来的消息,通过Message中的what属性值来区分哪个线程发送过来的消息。
UI操作通常会通过投递消息来实现,只有往正确的Looper投递消息才能得到处理,对于UI来说,这个Looper一定是运行在UI线程中的。所有的UI线程都是具有Looper的,所有控件基类的View提供了post方法,用于向UI线程发送消息,并在UI线程的Looper中处理这些消息。
(4)上机实现例7.4
1)新建项目Demo07_04,选择空白模板。
2)参考教材完善代码,在主线程中创建Hander,通过构造函数传递给线程类。其中Mainactivity.java的代码如图8-9,子线程Thread1的代码如图8-10.
图8-9
图8-10
3)运行及查看结果,Logcagt的部分显示结果如图8-11.
图8-11
(5)上机实现例7.5
1)新建项目Demo07_05,选择空白模板。
2)因为需要访问网络,在AndroidManifest.xml中添加网络访问的权限:
uses-permission android:name=android.permission.INTERNET/
3)MainActivity的布局代码如图8-12,包含一个下载按钮和ImageView控件。Java源代码如图8-13和图8-14,其中mHundle是主线程也就是UI线程处理消息的Hundler对象;在程序中定义了一个静态方法loadImageFromUrl( ),实现网络下载图片。
4)运行及查看结果。Logcat窗口的输出部分结果如图8-15,模拟机的运行结果如图8-16.
5)分析与小结:点击按钮之后,创建一个匿名线程,并调用其start( )方法启动该线程,在这个线程中进行图片下载并解码成Bitmap格式,然后通过Handler向UI线程发送消息以通知下载结果。UI线程收到消息之后,会分发给Hundler,在它的handlerMessage( )方法中根据消息的ID来处理下载结果,并更新UI界面。
图8-12
图8-13
图8-14
图8-15
图8-16
(6)上机实现例7.6
1)新建项目Demo07_06,选择空白模板。
2)添加网络访问的权限,MainAcitivityd内容同Demo07_05,,Java源代码如图8-17,8-18,8-19。
图8-17
图8-18
图8-19
3)运行及查看结果。模拟机的运行结果如图8-20。
图8-20
文档评论(0)