ImageVerifierCode 换一换
格式:PPTX , 页数:37 ,大小:1.02MB ,
文档编号:5175313      下载积分:25 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-5175313.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(晟晟文业)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

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

第11章-Android网络编程课件.pptx

1、 第十一章:网络编程 HTTPHTTP协议协议Handle消息机制原理消息机制原理 AsynctaskAsynctask网络状态网络状态 HttpHttpURLCURLConnectiononnection访问网络访问网络数据提交方式数据提交方式JSONJSON解析解析本章小结本章小结目录一、HTTPHTTP协议协议WWW是以Internet作为传输媒介的一个应用系统,WWW网上基本的传输单位是Web网页。WWW的工作是基于客户机/服务器计算模型,由Web浏览器和Web服务器构成,两者之间采用超文本传输协议HTTP进行通信。HTTP协议时基于TCP/IP协议之上的协议,是Web浏览器和Web服

2、务器之间的应用层的协议,是通用的、无状态的面向对象的协议。一、HTTPHTTP协议协议例如在日常生活中,当人们想看新闻时在手机浏览器输入,即可进入网易新闻,此访问过程是通过 HTTP 协议完成的,手机端访问服务器端的图解过程如图 11-1 所示。图11-1 HTT请求与响应二、二、HandleHandle消息机制原理消息机制原理在Android系统整体优化性能的考虑,Android的UI操作是线程安全的,这样导致有多个线程并发操作UI组件时,可能出现线程安全问题。当应用程序启动时,会开启一个主线程(也就是UI线程),由它来管理UI,监听用户点击,来响应用户并分发事件等。所以一般在主线程中不要执

3、行比较耗时的操作,如联网下载数据等,否则出现ANR错误。二、二、HandleHandle消息机制原理消息机制原理注意:线程安全是指多线程访问时,采用加锁机制,当一个线程访问该类的某个数据时,对数据进行保护,其他线程不能进行访问,直到该线程读取完,这样做的目的是不会出现数据不一致或者数据污染。线程不安全是指多线程访问时,不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据可能是脏数据。二、二、HandleHandle消息机制原理消息机制原理Handler 类主要做两件事:一是在新启动的子线程中发送消息;二是在主线程中获取、处理消息。主线程处理新的子线程发送过来的消息,主要是通过回调

4、方法来实现程序开发者重写 Handler 类处理消息方法,当新的子线程发送消息过来后,消息会与关联的 MessageQueue绑定,而 Handler 将从 MessageQueue 中获取消息。二、二、HandleHandle消息机制原理消息机制原理Handler机制主要包括4个对象,分别是Message、MessageQueue、Handler、Looper。Message:包含描述和任意数据对象的消息,用于发送给Handler。它主要在不同线程间进行数据交换。MessageQueue:是指消息队列,它主要用来接收Handler发送过来的消息,这些消息存放在MessageQueue中等待处

5、理。Handler:是指发送消息与处理消息的对象。Looper:是每个线程中的 MessageQueue 管理者。二、二、HandleHandle消息机制原理消息机制原理Handler 处理消息的步骤如下:(1)在 Activity 中声明 Handler 对象,然后重写 handleMessage()方法。(2)在新启动的线程中调用 sendMessage()或 sendEmptyMessage()方法向 Handler 发送消息。(3)在 Handler 对象中使用 handleMessage()方法接收消息,然后根据消息做后续操作处理。二、二、HandleHandle消息机制原理消息机制

6、原理Handler 的常用方法及说明。方法方法说明说明void handleMessage(Message msg)消息发送后在这个方法中接收处理boolean sendMessage(Message msg)发送消息到 Handlerboolean sendEmptyMessage(int what)发送只有一个 what 值的消息boolean sendMessageDelayed(Message msg,long delayMillis)延时发送消息void removeMessages(int what)删除消息/取消定时消息表11-1 Handler 的常用方法二、二、HandleH

7、andle消息机制原理消息机制原理当 MessageQueue 有消息进来时,将它取出并传递给 Handler 的 handleMessage()方法。在主线程创建 Handler 对象时,系统已经创建了Looper 对象,不需要程序开发者手动创建。Handler 消息处理流程如下图 11-2 所示。二、二、HandleHandle消消息机制原理息机制原理从图 11-2 可以看到整个 Handler 消息处理流程。先在 U I 线 程 中 创 建 一 个Handler 对象,然后在子线程 中 使 用 H a n d l e r 的 sendMessage()方法,接着将此消息存放到 Messa

8、geQueue 中,之后使用 L o o p e r 对 象 取 出 MessageQueue中的消息,最后发送给Handler 对象的 handleMessage()方法做后续操作处理。图11-2 Handler 消息处理流程二、二、HandleHandle消息机制原理消息机制原理【例11.1】通过Handler实现每隔1S钟更换一个TextView背景色一次,并在TextView中设置文字显示的内容为当前的颜色。【说明】本例主要使用两个类,一个是继承 Activity 的类,在其中声明 Handler 对象,并重写 handleMessage()方法,在此方法中根据消息的值来更改 Text

9、View 背景色以及文字的内容;另一个是继承 Thread 的类,并重写 run()方法,在此类下使用 sendEmptyMessage()方法向 Handler发送消息。二、二、HandleHandle消息机制原理消息机制原理【运行结果】在 Eclipse 中启动 Android 模拟器,接着运行 Handler_test 项目,显示效果如图 11-3 所示,点击“启动”按钮后的效果如图 11-4 所示。图11-3运行效果图11-4 点击“启动”后效果三、三、AsynctaskAsynctaskAsynctask是抽象类,创建一个类继承此类时,可以指定三个泛型参数,这个三个参数的作用分别如下

10、:Params:在执行Asynctask时需要传入的参数,用于后台任务中使用。比如HTTP请求的URL。Progress:在后台任务执行时,如果需要的界面上显示进度,此参数将作为百分比。Result:后台执行任务最终返回的结果,比如String类型。三、三、AsynctaskAsynctaskAsynctask 的执行过程分以下四个步骤,每一步对应一个回调方法。(1)onPreExecute(),此方法在执行后台操作前被主线程调用。可以在此方法中做一些前期准备工作,如显示一个进度条。(2)doInBackground(Params),此方法在 onPreExecute()方法执行后马上执行,在

11、后台线程中运行,这里主要用来处理一些耗时操作。注意,此方法是抽象方法,子类必须实现它。在这个方法中可以使用 publicProgress(Progress)来更新任务的进度。三、三、AsynctaskAsynctask(3)onProgressUpdate(Progress),在 publishProgress(Progress)方法被调用后,UI 线程将调用此方法来更新界面展示任务的进度,方法中携带的参数是后台任务中传递过来的数据。(4)onPostExecute(Result),在 doInBackground()方法执行完成后返回的参数传递到此方法中,进行后续处理,如提醒当前任务已经完成

12、。三、三、AsynctaskAsynctaskAsynctask 的执行过程如图 11-5 所示。图11-5 Asynctask 的执行过程三、三、AsynctaskAsynctaskAsynctask 的使用还要用到一些其他方法,如表 11-2 所示。表 11-2 Asynctask 的常用方法方法方法说明说明AsyncTask execute(Params.params)开启任务boolean cancel(boolean mayInterruptIfRunning)取消任务的执行AsyncTask.Status getStatus()获取任务的当前状态boolean isCancelle

13、d()如果任务正常后取消任务返回 true,否则为 false三、三、AsynctaskAsynctask【例11.2】通过Asynctask求用户输入一个数内的所包含的 合 数,并 把 这 些 合 数 显 示 在 用 户 界 面 上。【说明】本例主要使用 Asynctask 类的四个方法,o n P r e E xe c u t e()方 法 控 制 按 钮 的 可 用 状 态,onPostExecute(Result)方 法 输 出 最 终结 果,doInBackground(Params)与 onProgressUpdate(Progress)实时处理得到的合数并显示在用户界面上。三、三

14、、AsynctaskAsynctask【运行结果】在 Eclipse 中启动 Android 模拟器,接着运行 Asynctask_test 项目,显示效果如图 11-6 所示,输入 100,点击“开始计算”按钮后的效果如图 11-7 所示。图 11-6运行效果 图 11-7“开始计算”效果 四、网络状态 现在大量的Android应用程序需要在网络上获取数据,但是在获取网络数据之前,先要对数据状态进行判断,这样可以提升用户体验。网络使用的场景:用户界面上需要表述当前网络状态;Android应用程序后台要根据不同的网络状态来处理数据;Android应用程序后台要根据网络情况来开启相关服务。四、网

15、络状态获取网络服务的步骤:(1)获得系统服务。ConnectivityManager 负责管理所有的连接服务。使用 getSystemService()获得系统服务,系统服务包括 3G/4G、WiFi、蓝牙服务。(2)获得网络服务。通过 ConnectivityManager 的 getActiveNetworkInfo()方法获得 NetworkInfo类,此类即可用来检测网络的状态与类型。四、网络状态【例11.3】判断当前手机的网络连接状态与类型。【说明】本例通过使用ConnectivityManager.getA-ctiveNetworkInfo()方法获得 NetworkInfo 类,

16、然后检测网络连接状态与类型。四、网络状态【运行结果】在 Eclipse 中启动 Android 模拟器,接着运行 NetworkConnectivity_test 项目,移动网络打开时的显示效果如图 11-8 所示,WiFi 打开时的显示效果如图 11-9 所示。图11-8移动网络效果图 11-9 WIFI打开效果 五、五、HttpURLConnectionHttpURLConnection访问访问网络网络在Android开发应用中,大量应用程序需要与服务器进行数据交互,此时就可以使用HttpURLConnection对象。HttpURLConnection的通信基本流程:1.创建URL;2.

17、创建HttpURLConnection;3.设置HttpURLConnection请求参数;4.URLConnection建立连接;5.HttpURLConnection发送请求;6.HttpURLConneciton获取响应。【例11.4】从网络获取一个图片并显示在Android应用程序界面上。【说明】访问网络资源使用 HttpURLConnection 对象来进行通信。结果如下图所示:图11-10运行时项目效果图11-11“提交”后效果六、数据提交方式数据提交方式HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE

18、、这八种。六、数据提交方式数据提交方式1.POST与与GET两种请求方式的区别两种请求方式的区别GET 方式是以实体方式得到由请求 URL 所指向的资源信息,它向服务器提交的参数紧跟在 URL 后面。使用 GET 方式访问网络时 URL 的长度是有限制的,一般情况下请求 URL 的长度不超过 1KB。POST 方式是向服务器发送请求,然后接收附在请求后的数据。它向服务器提交数据是以流的方式直接写给服务器的,这种方式对 URL 的长度没有限制。七、JSONJSON1.JSON定义定义JSON(JavaScript Object Notation)是javscript对象标记,是一种基于文本的、独

19、立于语言的轻量级数据交换格式。易于阅读和编写,易于机器解析和生成。七、JSONJSONJSON 数据的书写格式是:名称/值对。名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值,如name:zhangsan。JSON 对象在花括号中书写,对象可以包含多个名称/值对。如:name:zhangsan,age:21。JSON 数组在方括号中书写,数组可包含多个对象。七、JSONJSON如:employees:name:zhangsan,age:21,name:lisi,age:30,name:wangwu,age:25 七、JSONJSON2.JSON解析解析JSONObject代表了一

20、个待解析的名称/值对集合,使用JSONObject jsonObject=new JSONObject(data)此语句获得JSONObject对象。如果值为基本数据类型时,然后使用相应的getx()方法了取值。七、JSONJSON【例11.5】编程解析下面Json数据:【说明】使用 JSONObject 封装上述 JSON 数据,然后使用相应的 getX()方法取得各个具体的值。【运行结果】在 Eclipse 中启动 Android 模拟器,接着运行 JSONObject_test 项目,运行时显示效果如图 11-12 所示,点击“开始解析”按钮的显示效果如图11-13所示。图 11-12项目效果 图 11-13 解析结果 八、八、本章本章小结小结本章主要讲Android应用程序开发中网络连接协议、网络连接状态、网络连接数据交互、网络数据处理等。本章还介绍了GET方式与POST方式两种网络请求的区别,最后介绍了JSON的定义,并通过案例讲解了JSON解析过程。

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

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


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