版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
张霞深圳职业技术学院Android应用开发案例教程(AndroidStudio第二版)
0103020405AndroidUI设计图像和动画数据存储广播Broadcast与服务Service媒体播放与录制Activity与多个用户界面07网络编程技术书目录06第7章
网络编程技术Android应用开发案例教程(AndroidStudio第二版)7.1基于WebKit的网络程序设计7.2基于HTTP的网络程序设计7.3应用Volley框架访问Web服务器7.4应用Volley框架解析JSON数据章目录7.1基于WebKit的网络程序设计Andiroid系统内置浏览器WebKit是一个开源的浏览器引擎,具有非常好的网页解析机制。该开源引擎由Java层和WebKit模块两个部分组成,Java层负责通信,WebKit模块负责网页的解析。7.1.1WebKit库7.1.2Web视图对象WebView类WebView可以直接使用html文件(网络或本地)作为布局。WebView能显示和渲染Web页面。WebView可以和JavaScript交互。WebView是WebKit模块的视图类。具有一般View的属性和设置外,还可以对url请求、页面加载、渲染、页面交互进行处理。1327.1.2Web视图对象WebView类在布局文件中声明WebView。在Activity中实例化WebView。调用WebView的loadUrl()方法。用WebView响应超链接,设置WebView视图。通过WebView单击链接进行深度访问后,为了使WebView支持回退功能,可以重写Activity的onKeyDown()方法。在androidManifest.xml中添加权限:
<uses-permissionandroid:name="android.permission.INTERNET"/>WebView类的调用步骤:7.1.2Web视图对象WebView类【例7-1】应用WebView对象浏览网页。用WebView显示网页7.1基于WebKit的网络程序设计7.2基于HTTP的网络程序设计7.3应用Volley框架访问Web服务器7.4应用Volley框架解析JSON数据章目录7.2基于HTTP协议的网络程序设计-÷×+HTTP是一种请求/响应式的协议,当客户端在与服务器端建立连接后,向服务器端发送的请求,称作HTTP请求。服务器端接收到请求后会做出响应,称为HTTP响应。通过HttpURLConnection类实现基于URL的请求及响应功能。下面讨论应用HttpURLConnection访问Web服务器。312HttpURLConnection是抽象类,需通过URL的openConection()方法创建具体的连接对象。设置请求属性,如连接超时时间、读取超时时间等。HttpURLConnection通过Socket连接网络。方法getOutputStream()
和getInputStream()
都会隐式地调用connect()方法,建立到远程资源的实际连接,这会与服务器建立Socket连接。7.2基于HTTP协议的网络程序设计HttpURLConnection
类的使用步骤如下:4远程资源连接后,访问远程对象的头信息和内容。HttpURLConnection是一种多用途、轻量级的HTTP客户端,大多数的应用程序可以使用它来进行HTTP操作。7.2基于HTTP协议的网络程序设计Android2.3以后版本增加了StrictMode类,对网络的访问方式进行了一定的改变。在磁盘访问或者网络访问中,StrictMode用于捕获与主进程间交互产生的问题。将磁盘访问和网络访问从主线程中剥离,可以使访问更加流畅,提升用户体验。一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线。进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间及一些进程级的资源。使用StrictMode将磁盘访问和网络访问从主线程中剥离(1)线程管理策略StrictMode.setThreadPolicy(newStrictMode.ThreadPolicy.Builder() //构造strictMode线程对象
.detectDiskReads() //当发生磁盘读操作时输出
.detectDiskWrites() //当发生磁盘写操作时输出
.detectNetwork()//访问网络时输出,包括磁盘读写和网络I/O.penaltyLog() //以日志方式输出
.build());(2)虚拟机管理策略StrictMode.setVmPolicy( newStrictMode.VmPolicy.Builder()
//构造strictModeVW虚拟机对象
.detectLeakedSqlLiteObjects() //探测SQLite数据库操作
.detectLeakedClosableObjects() //探测关闭操作
.penaltyLog().penaltyDeath().build());用一个案例来说明HttpURLConnection类和StrictMode类使用。【例7-2】从Web服务器读取图像文件。7.2基于HTTP协议的网络程序设计布局的控件、属性和效果从Web服务器读取图像文件的运行效果Handler类Android系统不允许在主线程中执行耗时操作,耗时操作可以交给子线程去完成。需要一种机制在主线程和子线程之间进行通信,这就是handler异步回调机制。handler归属于主线程,在主线程中声明和实例化handler对象。Handler类的作用
:
传递消息Message能让子线程通知主线程更新UI避免内存泄露classHHandlerextendsHandler
{
publicvoidhandleMessage(Messagemsg){
super.handleMessage(msg);
txt2.setText("(2)下载图像成功!");
img.setImageBitmap((Bitmap)msg.obj);
}
}7.1基于WebKit的网络程序设计7.2基于HTTP的网络程序设计7.3应用Volley框架访问Web服务器7.4应用Volley框架解析JSON数据章目录Android在2013年推出新的网络通信框架Volley,意在简化HTTP通信操作。Volley在性能方面进行了大幅度调整,它的设计目标是数据量不大,但通信频繁的网络操作。Volley的扩展性强,大多是基于接口的设计,可配置性强。Volley可方便地获取远程服务器的图片、字符串、Json对象和Json数组等。Volley包的下载与安装(不是必须):7.3应用Volley框架访问Web服务器从Android官网下载JAR文件:volley.jar。打开项目的App文件夹,复制volley.jar并粘贴到libs文件夹。使用鼠标右键单击新粘贴的volley.jar项,在弹出的菜单中选择AddAsLibrary命令,完成jar包的安装。7.3应用Volley框架访问Web服务器使用Volley有两个途径,一是安装压缩包,另一个是在build.gradle(app)添加一行代码:implementation'com.android.volley:volley:1.2.1'7.3应用Volley框架访问Web服务器Volley在工作时,首先由主线程(应用程序)发起一条HTTP请求,将请求添加到缓存队列中,然后,通过缓存调度线程,从缓存队列中取出一个请求,解析并做出响应,最后将解析后的响应发送给主线程。Volley的工作原理使用Volley框架需要创建2个重要对象:Request:请求对象RequestQueue:请求队列7.3应用Volley框架访问Web服务器Volley的使用步骤:创建RequestQueue对象。可用来管理多个并发异步的URL请求。创建Request对象。如果服务器成功响应,该如何处理传回的数据,如果服务器响应失败,该如何处理。将Request对象添加到RequestQueue中,开启排队模式。
创建Request对象StringRequeststringRequest=newStringRequest(
//第1个参数,目标服务器的URL地址
url,
//第2个参数,服务器响应成功的回调
newResponse.Listener<String>(){@OverridepublicvoidonResponse(Stringresponse){
//成功的处理
}},//第3个参数,服务器响应失败的回调
newResponse.ErrorListener(){@OverridepublicvoidonErrorResponse(VolleyErrorerror){
//失败的处理
}});创建StringRequest对象,需要三个参数:第1个参数是目标服务器的URL地址;第2个参数是服务器响应成功的回调;第3个参数是服务器响应失败的回调。7.3应用Volley框架访问Web服务器【例7-3】应用Volley框架从Web服务器读取JSON数据。自己搭建一个Web服务器存放jsonData.json文件。文件内容如下:{"weatherinfo":{"city":"北京","cityid":"101010100","temp1":"18℃","temp2":"31℃","weather":"多云转阴","img1":"d1.gif","img2":"n1.gif","ptime":"08:00"}}布局效果7.3应用Volley框架访问Web服务器【例7-3】应用Volley框架从Web服务器读取JSON数据。检查配置文件,确保网络权限:<uses-permissionandroid:name="android.permission.INTERNET"/>运行程序时首先启动Web服务器,检查网址/test/jsonData.json有效,再运行Android程序。
Android访问本机的ip地址是http:///test/jsonData.json7.1基于WebKit的网络程序设计7.2基于HTTP的网络程序设计7.3应用Volley框架访问Web服务器7.4应用Volley框架解析JSON数据章目录7.4应用Volley框架解析JSON数据解析来自网络的JSON数据,提取有用的信息。Volley的使用步骤不变,由于传回的数据是JSON数据,监听器Response.Listener中方法onResponse(…)的参数是JSONObject类型,直接用getJSONObject(…)方法即可获得键值对的值,程序变得更加简洁。{"weatherinfo":{"city":"北京","cityid":"101010100","temp1":"18℃","temp2":"31℃","weather":"多云转阴","img1":"d1.gif","img2":"n1.gif","ptime":"08:00"}}Response.Listeneralistener=newResponse.Listener<JSONObject>(){@OverridepublicvoidonResponse(JSONObjectresponse){try{JSONObjectmj=response.getJSONObject(...);Stringstr=newString(mj.getString(...));
}catch(JSONExceptione){...}}......7.4应用Volley框架解析JSON数据解析JSON数据,提取有用的信息city=北京,cityid=101010100,temp1=18℃,temp2=31℃,weather=多云转阴,ptime=18:00{"weatherinfo":{"city":"北京","cityid":"101010100","temp1":"18℃","temp2":"31℃","weather":"多云转阴","img1":"d1.gif","img2":"n1.gif","ptime":"08:00"}}创建Request对象创建JsonObjectRequest对象,需要三个参数:第1个参数是目标服务器的URL地址;第2个参数是服务器响应成功的回调;第3个参数是服务器响应失败的回调。JsonObjectRequestrequest=newJsonObjectRequest(
//第1个参数,目标服务器的URL地址
url,
//第2个参数,服务器响应成功的回调
newResponse.Listener<JSONObject>(){@OverridepublicvoidonResponse(JSONObjectresponse){//成功的处理
}},
//第3个参数,服务器响应失败的回调
newResponse.ErrorListener(){
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新疆警察学院《数字逻辑与数字电路技术实验》2023-2024学年第一学期期末试卷
- 《课间数学家逸闻》课件
- 校园贷款安全
- 《继承的法律冲突法》课件
- 空港股合同范例
- 手工车间设备转让合同范例
- 医疗备案合同范例
- 防水增项合同范例
- 家养宠物购买合同范例
- 雕塑采购合同范例
- 光伏扶贫项目可行性研究报告
- 深信服adesk桌面云方案测试
- PDCA降低I类切口感染发生率
- 弘扬兵团精神做兵团传人课件
- 数控车床上下料机械手设计说明书
- 2022年高考全国甲卷语文试题评讲课件55张
- 学校学生在校证明word模板
- 欠条(标准模版)
- 场内叉车安全培训
- 不锈钢项目立项申请报告
- 国家开放大学电大本科《西方社会学》2023-2024期末试题及答案(试卷代号:1296)
评论
0/150
提交评论