微课讲稿-Androidsocket网络编程原理课件_第1页
微课讲稿-Androidsocket网络编程原理课件_第2页
微课讲稿-Androidsocket网络编程原理课件_第3页
微课讲稿-Androidsocket网络编程原理课件_第4页
微课讲稿-Androidsocket网络编程原理课件_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Android Socket网络编程原理北京信息职业技术学院 | 林志红Android Socket网络编程原理北京信息职业技术学院Android Socket网络编程原理人生之路是漫长的,但紧要处只有几步,尤其当人年轻的时候。 柳青智能手机像个人电脑一样,具有独立的操作系统,并可以通过移动通讯网络来实现无线网络接入。移动互联网:就是将移动通信和互联网二者结合起来,成为一体。移动通信和互联网成为当今世界发展最快、市场潜力最大、前景最诱人的两大业务。现在很少有智能手机软件无需联网就能正常使用其相关功能,几乎没有“功能不以联网为基础”的软件了。Android系统是当今主流手机操作系统之一,基于An

2、droid平台的网络程序设计成为手机软件开发中的关键技术。Android Socket网络编程原理人生之路是漫长的,但告知目标人生之路是漫长的,但紧要处只有几步,尤其当人年轻的时候。 柳青Java Socket编程,是基于Java SE平台的网络编程Android平台的Socket网络程序设计SE平台上Java Socket相关内容在Android平台上都是适用的Android平台上做Socket编程还有一些具体的规则需要遵循今天我们的目标就是学习如何在Android平台上实现Java Socket网络编程告知目标人生之路是漫长的,但紧要处只有几步,尤其当人年轻的时Android Socket

3、网络编程原理人生之路是漫长的,但紧要处只有几步,尤其当人年轻的时候。 柳青服务器必须要有一个固定的IP地址,这样才能接受来自全球的客户端连接请求手机无线上网时IP地址通常都是由移动运营公司动态分配的,没有固定的IP地址一般Socket在Android上的编程应用中,都是作为客户端来使用Android Socket网络编程原理人生之路是漫长的,但Android Socket网络编程原理人生之路是漫长的,但紧要处只有几步,尤其当人年轻的时候。 柳青网络操作一般比较耗时,有时甚至会阻塞,这样就会导致UI操作响应迟钝,破坏了用户体验不能在UI线程中进行网络操作所有的网络相关操作,包括建立连接、数据发送

4、、数据接收都必须放在新启动的线程中Android Socket网络编程原理人生之路是漫长的,但Android Socket网络编程原理这样就产生一个新的问题,因为UI线程中一般会有一些界面组件用来显示从网络上收到的数据,而接收网络上的数据是在另外一个线程上实现的,Android平台不允许新启动的线程访问UI线程中的界面组件,于是就有了矛盾,接收到的数据如何反映在界面中呢?Android Socket网络编程原理这样就产生一个新的问 Android Socket网络编程原理解决这个矛盾的方法就是借助Handler的消息传递机制 Android Socket网络编程原理解决这个矛盾的方法 Andr

5、oid Socket网络编程原理Android规定只能通过 Handler 机制更新 UI最根本的目的就是解决多线程并发的问题,假设在一个 Activity 当中,有多个线程去更新 UI,并且对更新的 UI 进行互斥处理,那么直接结果就是性能下降。Handler 通过消息队列,保证了消息处理的先后有序。 Android Socket网络编程原理Android规定Android Socket网络编程原理人生之路是漫长的,但紧要处只有几步,尤其当人年轻的时候。 柳青就像一个总公司管理着若干个子公司,每个子公司都需要给老板提交各种报告,如果所有人写完报告就往老板手里送,那么就可能使工作秩序非常混乱,

6、造成工作效率低下。合理的做法是进行专业分工,派专人在总公司和各个子公司之间传递报告。总公司雇佣专门的快递人员,当子公司需要提交报告时,就请快递人员帮助送一趟。快递人员从子公司取得报告后快速送达总公司,并且把报告按提交时间的先后顺序整理好,放在文件柜中。子公司提交的各种报告需要及时处理,总公司又聘请了专门的秘书人员将送到总公司的报告按先后顺序一份一份地送到老板那里去处理。如果暂时没有需要处理的报告,秘书可以休息会儿,发发呆,但是一旦有报告送来,就必须立刻进入工作状态,及时把报告送到老板那里去。 Android Socket网络编程原理人生之路是漫长的,但Android Socket网络编程原理人

7、生之路是漫长的,但紧要处只有几步,尤其当人年轻的时候。 柳青现在回到Hnadler, 什么是Handler呢?Handler 是 Android 给我们提供的一套消息处理的机制,包括消息创建、传递、处理机制,我们可以通过Handler发送消息,也可以通过它来处理消息,Handler特别适合用来更新 UI。Android Socket网络编程原理人生之路是漫长的,但Android Socket网络编程原理人生之路是漫长的,但紧要处只有几步,尤其当人年轻的时候。 柳青在介绍Handler机制前,首先了解以下几个概念:Message: 消息,可理解为线程间传递的数据单元,相当于各个子公司提交的报告。

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

9、间桥梁的角色,循环取出Message Queue里面的Message,并交付给相应的Handler进行处理。Looper就是老板聘请的秘书小姐,把需要处理的报告从文件柜中取出来送给老板处理Android Socket网络编程原理Handler HaAndroid Socket网络编程原理UI 线程 通常就是主线程,而Android启动程序时会替它建立一个Message Queue。UI线程就是总公司,各个子线程就是子公司,总公司的Handler老板处理各个子公司发来的报告。对于UI线程这个总公司来说,Handler的目标就是根据各个子线程汇报上来的各种最新时尚信息随时修正公司的形象,保持公司形

10、象与时俱进。Android Socket网络编程原理UI 线程 通常就是Android Socket网络编程原理 Message类重要成员变量:public int what用户自定义的消息代码,这样接受者可以了解这个消息的信息。每个handler各自包含自己的消息代码,所以不用担心自定义的消息跟其他handlers有冲突。public Object obj传递给接收器的数据,封装在Message类中,可以是任意对象。Android Socket网络编程原理 Message类Android Socket网络编程原理Hnadler类:重要方法:public void handleMessage

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

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

13、er类和Looper类按如下方式配合:假设UI线程中有一个Textview,子线程要想改变UI线程中TextView的内容。由于子线程不能直接访问UI线程的界面组件,只能通过Handler消息传递机制将字符串存放在消息中发送给UI线程。Handler对象有两个方法,一个是sendMessage(),负责把消息送入消息队列,所以这个方法一般用在子线程,另一个方法是handleMessage(),这个方法负责处理Looper从消息队列取出的消息,处理的方法就是将收到的消息中携带的字符串取出,然后用这个字符串去填充UI中的TextView组件,所以handleMessage()方法一般运行在UI线程

14、。 Android Socket网络编程原理总的来说,Messa学习指导例:编制程序,在手机屏幕上放置两个TextView, 两个TextView 的内容都是计时信息,其中一个TextView的内容每隔一秒加1,另一个每隔3秒加1。这个例子很明显要用到Handler消息机制。在主线程中放置两个TextView组件,启动两个子线程,一个子线程每延时1秒给主线程发一个消息,另一个子线程每延时3秒给主线程发送消息。两个线程发送的消息通过消息的what域加以区分。主线程收到消息后更新TextView组件。由于有两个TextView组件,所以要检查收到消息的what域才能决定应该更新哪一个TextVie

15、w组件。具体代码如下所示学习指导例:编制程序,在手机屏幕上放置两个TextView,学习指导main.xml学习指导main.xml学习指导Time_Watch_Activity.java学习指导Time_Watch_Activity.java学习指导学习指导学习指导学习指导学习指导定义两个延时线程,一个线程反复延时1秒,延时时间到时将当前计时结果放在消息中的obj域传递给主线程,消息的what域设定为1,发送消息后重新延时;另一个线程反复延时3秒,延时时间到时将当前计时结果放在消息中的obj域传递给主线程,消息的what域设定为3,发送消息后重新延时。代码如上图 学习指导定义两个延时线程,一个线程反复延时1秒,延时时间到时学习指导运行结果: 学习指导运行结果: 学习指导学习指导学习指导在Android平台上开发Socket网络应用程序还有一个特殊点,就是需要设置网络相关权限,如:表示该应用程序获得了访问Wifi状态和互联网的权限。如果不设置网络访问权限,那么应用程序在遇到网络数据操作时就会报错。学习指导在Android平台上开发Socket网络应用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论