微课讲稿-Androidsocket网络编程原理课件.ppt

上传人(卖家):晟晟文业 文档编号:4231669 上传时间:2022-11-21 格式:PPT 页数:29 大小:1.45MB
下载 相关 举报
微课讲稿-Androidsocket网络编程原理课件.ppt_第1页
第1页 / 共29页
微课讲稿-Androidsocket网络编程原理课件.ppt_第2页
第2页 / 共29页
微课讲稿-Androidsocket网络编程原理课件.ppt_第3页
第3页 / 共29页
微课讲稿-Androidsocket网络编程原理课件.ppt_第4页
第4页 / 共29页
微课讲稿-Androidsocket网络编程原理课件.ppt_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、Android Socket网络编程原理智能手机像个人电脑一样,具有独立的操作系统,智能手机像个人电脑一样,具有独立的操作系统,并可以通过移动通讯网络来实现无线网络接入。移并可以通过移动通讯网络来实现无线网络接入。移动互联网:就是将移动通信和互联网二者结合起来,动互联网:就是将移动通信和互联网二者结合起来,成为一体。移动通信和互联网成为当今世界发展最成为一体。移动通信和互联网成为当今世界发展最快、市场潜力最大、前景最诱人的两大业务。现在快、市场潜力最大、前景最诱人的两大业务。现在很少有智能手机软件无需联网就能正常使用其相关很少有智能手机软件无需联网就能正常使用其相关功能,几乎没有功能,几乎没有

2、“功能不以联网为基础功能不以联网为基础”的软件了。的软件了。Android系统是当今主流手机操作系统之一,基于系统是当今主流手机操作系统之一,基于Android平台的网络程序设计成为手机软件开发中的平台的网络程序设计成为手机软件开发中的关键技术。关键技术。告知目标Java Socket编程,是基于编程,是基于Java SE平台的网络编程平台的网络编程Android平台的平台的Socket网络程序设计网络程序设计SE平台上平台上Java Socket相关内容在相关内容在Android平台上都是适用的平台上都是适用的Android平台上做平台上做Socket编程还有一些具体的规则需要遵循编程还有一

3、些具体的规则需要遵循今天我们的目标就是学习如何在今天我们的目标就是学习如何在Android平台上实现平台上实现Java Socket网络编程网络编程Android Socket网络编程原理服务器必须要有一个固定的服务器必须要有一个固定的IP地址,这样才能接受来自全球的地址,这样才能接受来自全球的客户端连接请求客户端连接请求手机无线上网时手机无线上网时IP地址通常都是由移动运营公司动态分配的,地址通常都是由移动运营公司动态分配的,没有固定的没有固定的IP地址地址一般一般Socket在在Android上的编程应用中,都是作为客户端来使用上的编程应用中,都是作为客户端来使用Android Socke

4、t网络编程原理网络操作一般比较耗时,有时甚至会阻塞,这样就会网络操作一般比较耗时,有时甚至会阻塞,这样就会导致导致UI操作响应迟钝,破坏了用户体验操作响应迟钝,破坏了用户体验不能在不能在UI线程中进行网络操作线程中进行网络操作所有的网络相关操作,包括建立连接、数据发送、数所有的网络相关操作,包括建立连接、数据发送、数据接收都必须放在新启动的线程中据接收都必须放在新启动的线程中Android Socket网络编程原理这样就产生一个新的问题,因为这样就产生一个新的问题,因为UI线程中一般会线程中一般会有一些界面组件用来显示从网络上收到的数据,有一些界面组件用来显示从网络上收到的数据,而接收网络上的

5、数据是在另外一个线程上实现的,而接收网络上的数据是在另外一个线程上实现的,Android平台不允许新启动的线程访问平台不允许新启动的线程访问UI线程中的线程中的界面组件,界面组件,于是于是就就有有了矛盾,接收了矛盾,接收到的到的数据数据如何如何反映在界面中呢?反映在界面中呢?Android Socket网络编程原理解决这个矛盾的方法就是借助Handler的消息传递机制 Android Socket网络编程原理Android规定只能通过规定只能通过 Handler 机制更新机制更新 UI最根本的最根本的目的就是解决多线程并发的问题,假设在一个目的就是解决多线程并发的问题,假设在一个 Activi

6、ty 当中,有多个线程去更新当中,有多个线程去更新 UI,并且对更新的,并且对更新的 UI 进行互进行互斥处理,那么直接结果就是性能下降。斥处理,那么直接结果就是性能下降。Handler 通过消通过消息队列,保证了消息处理的先后有序。息队列,保证了消息处理的先后有序。Android Socket网络编程原理就像一个总公司管理着若干个子公司,每个子公司都需要给就像一个总公司管理着若干个子公司,每个子公司都需要给老板提交各种报告,如果所有人写完报告就往老板手里送,那老板提交各种报告,如果所有人写完报告就往老板手里送,那么就可能使工作秩序非常混乱,造成工作效率低下。合理的做么就可能使工作秩序非常混乱

7、,造成工作效率低下。合理的做法是进行专业分工,派专人在总公司和各个子公司之间传递报法是进行专业分工,派专人在总公司和各个子公司之间传递报告。总公司雇佣专门的快递人员,当子公司需要提交报告时,告。总公司雇佣专门的快递人员,当子公司需要提交报告时,就请快递人员帮助送一趟。快递人员从子公司取得报告后快速就请快递人员帮助送一趟。快递人员从子公司取得报告后快速送达总公司,并且把报告按提交时间的先后顺序整理好,放在送达总公司,并且把报告按提交时间的先后顺序整理好,放在文件柜中。子公司提交的各种报告需要及时处理,总公司又聘文件柜中。子公司提交的各种报告需要及时处理,总公司又聘请了专门的秘书人员将送到总公司的

8、报告按先后顺序一份一份请了专门的秘书人员将送到总公司的报告按先后顺序一份一份地送到老板那里去处理。如果暂时没有需要处理的报告,秘书地送到老板那里去处理。如果暂时没有需要处理的报告,秘书可以休息会儿,发发呆,但是一旦有报告送来,就必须立刻进可以休息会儿,发发呆,但是一旦有报告送来,就必须立刻进入工作状态,及时把报告送到老板那里去。入工作状态,及时把报告送到老板那里去。Android Socket网络编程原理现在回到现在回到Hnadler,什么是什么是Handler呢?呢?Handler 是是 Android 给我们提供的一套消息处理的机制,包给我们提供的一套消息处理的机制,包括消息创建、传递、处

9、理机制,我们可以通过括消息创建、传递、处理机制,我们可以通过Handler发送消发送消息,也可以通过它来处理消息,息,也可以通过它来处理消息,Handler特别适合用来更新特别适合用来更新 UI。Android Socket网络编程原理在介绍在介绍Handler机制前,首先了解以下几个概念:机制前,首先了解以下几个概念:Message:消息,可理解为线程间传递的数据单元,相当于各消息,可理解为线程间传递的数据单元,相当于各个子公司提交的报告。个子公司提交的报告。Message Queue:消息队列,用来存放发布的消息,消息按先消息队列,用来存放发布的消息,消息按先进先出原则出入队列,消息队列相

10、当于按顺序存放各种报告的进先出原则出入队列,消息队列相当于按顺序存放各种报告的文件柜。文件柜。Android Socket网络编程原理Handler Handler是是Message的主要处理者,负责将的主要处理者,负责将Message添添加到消息队列以及对消息队列中的加到消息队列以及对消息队列中的Message进行处理。进行处理。Handler就是总公司的老板,雇佣快递人员传递报告,聘请了秘书人员就是总公司的老板,雇佣快递人员传递报告,聘请了秘书人员管理这些报告,他自己来处理这些报告。不过由于经济原因,管理这些报告,他自己来处理这些报告。不过由于经济原因,他不得不辞掉快递人员,亲自去完成快递

11、工作。他不得不辞掉快递人员,亲自去完成快递工作。Looper 循环器,扮演循环器,扮演Message Queue和和Handler之间桥梁的角之间桥梁的角色,循环取出色,循环取出Message Queue里面的里面的Message,并交付给相应的,并交付给相应的Handler进行处理。进行处理。Looper就是老板聘请的秘书小姐,把需要处就是老板聘请的秘书小姐,把需要处理的报告从文件柜中取出来送给老板处理理的报告从文件柜中取出来送给老板处理Android Socket网络编程原理UI 线程线程 通常就是主线程,而通常就是主线程,而Android启动程序时会替它建立启动程序时会替它建立一个一个M

12、essage Queue。UI线程就是总公司,各个子线程就是子线程就是总公司,各个子线程就是子公司,总公司的公司,总公司的Handler老板处理各个子公司发来的报告。对老板处理各个子公司发来的报告。对于于UI线程这个总公司来说,线程这个总公司来说,Handler的目标就是根据各个子线程的目标就是根据各个子线程汇报上来的各种最新时尚信息随时修正公司的形象,保持公司汇报上来的各种最新时尚信息随时修正公司的形象,保持公司形象与时俱进。形象与时俱进。Android Socket网络编程原理 Message类类重要成员变量:重要成员变量:public int what用户自定义的消息代码,这样接受者可以

13、了解这个消息的信息。用户自定义的消息代码,这样接受者可以了解这个消息的信息。每个每个handler各自包含自己的消息代码,所以不用担心自定义的各自包含自己的消息代码,所以不用担心自定义的消息跟其他消息跟其他handlers有冲突。有冲突。public Object obj传递给接收器的数据,封装在传递给接收器的数据,封装在Message类中,可以是任意对象。类中,可以是任意对象。Android Socket网络编程原理Hnadler类:类:重要方法:重要方法:public void handleMessage(Message msg)Handler通过该方法接收并处理消息。该方法需要重载,将自

14、通过该方法接收并处理消息。该方法需要重载,将自己的具体处理方法写入该方法的代码。己的具体处理方法写入该方法的代码。public final boolean sendMessage(Message msg)子线程通过该方法发送消息到子线程通过该方法发送消息到Handler,通过,通过handleMessage方方法接收。法接收。sendMessage方法将一个消息对象方法将一个消息对象(Message)加入队列,加入队列,包含了要传递的数据,之后将会被包含了要传递的数据,之后将会被Handler的的handleMessage(Message)方法所处理方法所处理Android Socket网络编

15、程原理Looper类:类:调用调用Looper类的方法可以为当前线程创建一个消息循环,并进类的方法可以为当前线程创建一个消息循环,并进入循环管理信息,直到循环结束。入循环管理信息,直到循环结束。重要方法:重要方法:public static final void prepare()创建消息循环创建消息循环public static void loop()进入消息循环,不断从进入消息循环,不断从MessageQueue中取消息,交给中取消息,交给Handler去处理。去处理。Android Socket网络编程原理总的来说,总的来说,Message类、类、Hnadler类和类和Looper类按如

16、下方式配合:类按如下方式配合:Android Socket网络编程原理总的来说,总的来说,Message类、类、Hnadler类和类和Looper类按如下方式配合:类按如下方式配合:假设假设UI线程中有一个线程中有一个Textview,子线程要想改变,子线程要想改变UI线程中线程中TextView的内容。由于子线程不能直接访问的内容。由于子线程不能直接访问UI线程的界面组件,线程的界面组件,只能通过只能通过Handler消息传递机制将字符串存放在消息中发送给消息传递机制将字符串存放在消息中发送给UI线程。线程。Handler对象有两个方法,一个是对象有两个方法,一个是sendMessage()

17、,负责,负责把消息送入消息队列,所以这个方法一般用在子线程,另一个把消息送入消息队列,所以这个方法一般用在子线程,另一个方法是方法是handleMessage(),这个方法负责处理(),这个方法负责处理Looper从消息从消息队列取出的消息,处理的方法就是将收到的消息中携带的字符队列取出的消息,处理的方法就是将收到的消息中携带的字符串取出,然后用这个字符串去填充串取出,然后用这个字符串去填充UI中的中的TextView组件,所以组件,所以handleMessage()方法一般运行在方法一般运行在UI线程。线程。学习指导例:编制程序,在手机屏幕上放置两个例:编制程序,在手机屏幕上放置两个Text

18、View,两个两个TextView 的内的内容都是计时信息,其中一个容都是计时信息,其中一个TextView的内容每隔一秒加的内容每隔一秒加1,另一个每,另一个每隔隔3秒加秒加1。这个例子很明显要用到这个例子很明显要用到Handler消息机制。在主线程中放置两个消息机制。在主线程中放置两个TextView组件,启动两个子线程,一个子线程每延时组件,启动两个子线程,一个子线程每延时1秒给主线秒给主线程发一个消息,另一个子线程每延时程发一个消息,另一个子线程每延时3秒给主线程发送消息。两秒给主线程发送消息。两个线程发送的消息通过消息的个线程发送的消息通过消息的what域加以区分。主线程收到消域加以

19、区分。主线程收到消息后更新息后更新TextView组件。由于有两个组件。由于有两个TextView组件,所以要检查组件,所以要检查收到消息的收到消息的what域才能决定应该更新哪一个域才能决定应该更新哪一个TextView组件。具体组件。具体代码如下所示代码如下所示学习指导main.xml学习指导Time_Watch_Activity.java学习指导学习指导学习指导定义两个延时线程,一个线程反复延时定义两个延时线程,一个线程反复延时1秒,延时时间到时将当前秒,延时时间到时将当前计时结果放在消息中的计时结果放在消息中的obj域传递给主线程,消息的域传递给主线程,消息的what域设定为域设定为1

20、,发送消息后重新延时;另一个线程反复延时发送消息后重新延时;另一个线程反复延时3秒,延时时间到时将秒,延时时间到时将当前计时结果放在消息中的当前计时结果放在消息中的obj域传递给主线程,消息的域传递给主线程,消息的what域设域设定为定为3,发送消息后重新延时。代码如上图,发送消息后重新延时。代码如上图 学习指导运行结果运行结果:学习指导学习指导在在Android平台上开发平台上开发Socket网络应用程序还有一个特殊点,就是网络应用程序还有一个特殊点,就是需要设置网络相关权限,如:需要设置网络相关权限,如:表示该应用程序获得了访问表示该应用程序获得了访问Wifi状态和互联网的权限。如果不设置

21、状态和互联网的权限。如果不设置网络访问权限,那么应用程序在遇到网络数据操作时就会报错。网络访问权限,那么应用程序在遇到网络数据操作时就会报错。总结 Android平台上开发平台上开发Socket网络程序的特殊性在于:网络程序的特殊性在于:1.Socket在在Android上的编程应用中,都是作为客户端来使用上的编程应用中,都是作为客户端来使用2.访问网络不能在主线程中进行,而子线程不能访问主线程中访问网络不能在主线程中进行,而子线程不能访问主线程中的界面组件,这就要用到的界面组件,这就要用到Handler的消息传递机制的消息传递机制3.在编写访问网络的应用程序时,要设定相应的网络访问权限在编写访问网络的应用程序时,要设定相应的网络访问权限作业与思考画出画出Message、Looper和和Handler三者之间的关系图三者之间的关系图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(微课讲稿-Androidsocket网络编程原理课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|