【 Android官方文档读书笔记】连接网络

网络连接时应用的最基本的功能之一,Android系统对网络连接进行了封装,使得开发者能够更快的给应用增加网络功能。大多数网络连接的Android应用使用HTTP发送和接受数据,Android包括两个HTTP客户端:HttpURLConnection和Apache HttpClient。开发者可以使用这两个客户端中的任意一个去完成网络连接。

1, 网络连接的基本步骤:

(1)增加权限:manifest文件中必须包含以下权限

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

(2)检查网络状态,利用ConnectivityManager 的getActiveNetworkInfo()和isConnected()方法执行检查。如下:

ConnectivityManager connMgr = (ConnectivityManager)

getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();

if (networkInfo != null && networkInfo.isConnected()) {

// 获取数据

} else {

// 显示错误

}

(3)在独立线程中执行网络连接:网络操作涉及不可预知的延迟,为了防止不良的用户体验,通常的做法是从UI中独立出线程去执行网络连接操作。

(4)连接并下载数据,以HttpURLConnection

URL url = new URL(myurl);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setReadTimeout(10000 /* milliseconds */);

conn.setConnectTimeout(15000 /* milliseconds */);

conn.setRequestMethod("GET");

conn.setDoInput(true);

conn.connect();

int response = conn.getResponseCode();

is = conn.getInputStream();

(5)流对象转换为字符串对象

Reader reader = null;

reader = new InputStreamReader(stream, "UTF-8");

char[] buffer = new char[len];

reader.read(buffer);

2,HttpClient与HttpURLConnection的对比。

HttpClient与HttpURLConnection都支持HTTPS,流上传和下载, 可配置的超时,IPv6以及连接池。因此两个都可以完成基本的网络操作。

HttpClient是Apache开源组织提供的一个开源的项目,Android把它集成了进去。拥有众多的Api,实现比较稳定,bug少。但同时也由于HttpClient的API数量过多,使得开发者很难在不破坏兼容性的情况下对它进行升级和扩展,所以目前Android团队在提升和优化HttpClient方面的工作态度并不积极。

HttpURLConnection是一种多用途、轻量级的HTTP客户端。他的Api比较简单,开发者比较容易使用以及对它进行扩展。但缺点是Android2.3之前的版本存在一些Bug,如:对一个可读的InputStream调用close()方法时,就有可能会导致连接池失效等。Android2.3系统对这些问题进行了修复,并增加了一些HTTPS方面的改进。在Android
4.0版本中,又添加了一些响应的缓存机制,而且Google团队会持续去对HttpURLConnection进行优化。

一般建议2.3之前的系统使用HttpClient,而2.3及其之后的版本使用HttpURLConnection。

时间: 2024-11-09 00:19:37

【 Android官方文档读书笔记】连接网络的相关文章

【 Android官方文档读书笔记】保存数据

Android提供了3种数据保存方式:SharePreference.文件与数据库. 1,SharePreference 如果想保存一个相对较小的key-values集合,可以使用 SharedPreferences API. SharedPreferences对象指向包含key-value对的文件,并且提供简单的读写方式.每个SharedPreferences文件均由框架管理,私人或共享均可使用.其本质是一个xml文件. 数据读入: SharedPreferences sharedPref =

【 Android官方文档读书笔记】硬件加速

为了让应用在Android系统运行起来更加流畅,从3.0开始,Android 2D的绘制流程就设计为能够更好地支持硬件加速.所谓硬件加速就是使用GPU进行View上的绘制操作,从而是渲染速度更快,应用体验更加流畅. 1,启动硬件加速的方法 启用硬件加速的最简单方法就是为整个系统打开硬件加速的全局设置,然而硬件加速并不支持所有2D画的操作,所以开启硬件加速可能会对使用自定义组件的应用程序造成影响,问题常常表现在不可见的元素异常和错误的像素渲染.为了解决这个问题Android可以选择启动或者禁用以下

django官方文档读书笔记

写在前面:这算是第二次读英文原文文档,第一次是读scrapy,感觉还是要做笔记,好记性不如烂笔头,现在已经忘了scrapy文档讲了什么了,心疼.以后要多读多写 经过半年的基础学习(懒,拖延)终于来到web开发这一步,当时买了董大的web实战,准备是用flask来实现的,但是后面在逼乎上找到某培训班的django视频资源,所以最终还是决定用django. 看过各种对django的评价之后,个人总结django是一个已经高度框架化的框架了(笑),他的每一部分M,V,T都已经帮用户分好了,用户可自主选

【Android官方文档】翻译Android官方文档-Activities(一)

Activity是可以给用户提供交互操作的程序组件,例如打电话,拍照,发送邮件,抑或者是显示地图.通常窗口会填满屏幕,但是也可以做到比屏幕小或者是悬浮在窗口顶部. App通常由多个Activities组成,它们之间支持相互跳转.一般情况下,每个Activity在应用中都是特别的,就好像 主Activity一样,主activity是应用第一个Activity,其他Activity可以通过其他操作启动.一个新的Activity的启动,那么旧Activity就会被停止,但是系统会保存这些activit

Android官方文档之Creating a Content Provider

写在前面的话:说两点.1.很荣幸自己的两篇文章< Android官方文档之App Components(Intents and Intent Filters)>.<Android官方文档之App Components(Common Intents)>被郭霖老师转载了,一方面说明我的博客内容得到了认可,另一方面也鞭策我继续写出质量更高的博文:2.最近在翻译官方文档,今天翻墙一看,发现页面改版了,而且居然默认显示了中文的文档(其实改版以前也有官方的中文文档,只是默认显示英文而已,另外中

Android官方文档之Bound Services

绑定式Service在CS结构中扮演着Server的角色.绑定式Service允许其他组件(如Activity)绑定该Service.发送请求.接收响应.甚至IPC通信( interprocess communication).绑定式Service通常服务于其他应用程序的组件.且没有明确的后台的概念(does not run in the background indefinitely). 本文将介绍bound Service的相关内容,包括其创建.与其他应用组件如何绑定 等.有关Service

Android官方文档之App Components(Activities)

Activity是Android四大组件之首,本文将介绍Activity的含义.创建.启动.销毁.生命周期 等. 如需访问官方原文,您可以点击这个链接:<Activities> Activities Activity是一个类,它是Android呈现界面的载体,用于与用户操作交互,如拨号.照相.发送邮件.展示地图 等.每个Activity都承载了一个Window,这个Window用来绘制UI(User Interface).一般情况下,该Window铺满(fill)整个屏幕:有时候,它也可以悬浮

【android官方文档】与其他App交互

发送用户到另外一个App YOU SHOULD ALSO READ 内容分享 One of Android's most important features is an app's ability to send the user to another app based on an "action" it would like to perform. For example, if your app has the address of a business that you'd

Android官方文档之App Components(Common Intents)

Intent的真正强大之处在于它的隐式Intent,隐式Intent需要配合Intent-filters使用,有关这方面的概念和知识,您可以参考我翻译的官方文档:<Android官方文档之App Components(Intents and Intent Filters)>. 隐式Intent足够强大,以至于系统提供了大量的Intent方便开发者启动系统应用程序,本文将介绍一些常用的隐式Intent.以及如何自定义intent-filters以匹配隐式intent. 如需阅读官方原文,您可以点