Android
来源:互联网 发布:电子视频制作软件 编辑:程序博客网 时间:2024/05/17 19:59
Android 网络下载
这里主要介绍网络的基础知识,以及Android里进行下载的知识
1、Http与Https
Https为双向加密认证的方式,更加安全,这里主要介绍Android里的网络访问方式,不在这里对Http和https过多介绍
2、Android下载
从接触Android下载以来,对Android中下载的理解为,即通过地址访问前端,最后变成文件流的方式,进行保存到本地,说白了,就是文件流的下载,但是Android也有几种方式:HttpClient与HttpUrlConnection,
HttpClient有一个比较明显的例子:
public static synchronized HttpClient getHttpClient() {
if (null == customerHttpClient) {
HttpParams params = new BasicHttpParams();
// 设置一些基本参数
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, CHARSET);
HttpProtocolParams.setUseExpectContinue(params, true);
HttpProtocolParams
.setUserAgent(
params,
“Mozilla/5.0(Linux;U;Android 2.2.1;en-us;Nexus One Build.FRG83) ”
+ “AppleWebKit/553.1(KHTML,like Gecko) Version/4.0 Mobile Safari/533.1”);
// 超时设置
/* 从连接池中取连接的超时时间 */
ConnManagerParams.setTimeout(params, 1000); //1
/* 连接超时 */
HttpConnectionParams.setConnectionTimeout(params, 5000);//2,5
/* 请求超时 */
HttpConnectionParams.setSoTimeout(params, 5000);//4,5
// 设置我们的HttpClient支持HTTP和HTTPS两种模式 SchemeRegistry schReg = new SchemeRegistry(); schReg.register(new Scheme("http", PlainSocketFactory .getSocketFactory(), 80)); schReg.register(new Scheme("https", SSLSocketFactory .getSocketFactory(), 443)); // 使用线程安全的连接管理来创建HttpClient ClientConnectionManager conMgr = new ThreadSafeClientConnManager( params, schReg); customerHttpClient = new DefaultHttpClient(conMgr, params); } return customerHttpClient; }
但是Android2.3之后,更加推崇HttpUrlConnection访问方式,Android里通过HttpUrlConnection下载的例子有可参考:
http://blog.csdn.net/u012527802/article/details/51153071
3、Android下载的难点
除了上面说的访问方式之后,Android下载里还有的难点有多线程下载以及断点续传,断点续传需要通过数据库存储,暂时不写,多线程是通过线程池来做,但是多线程的实现,需要注意线程池的使用
即使是但是文件,也可以使用多线程来下载,此时使用的是RandomAccessFile来进行索引下载流的位置:参考资料为:
http://blog.csdn.net/mad1989/article/details/38421465
对于多个文件并且文件较大的时候,可以使用线程池来进行下载,线程池可以分为:
(1) newCachedThreadPool()
(2) newFixedThreadPool()
(3) newScheduledThreadPool()
(4) SingleThreadExecutor
以上4种线程池到现在用的不多,具体看第三种线程池的用法
线程池的使用主要用到的类有:
- Android
- android
- Android
- android
- android
- Android
- Android
- android
- android
- android
- Android
- Android
- android!!!
- android
- android
- android
- android
- android:
- 微信公众号开发(持续更新)
- API学习GregorianCalendar
- RecyclerView中嵌套RecyclerView或其他可滑动布局抢占焦点的问题
- Linux学习第三十篇--查看正在登录用户和同其他用户交流的命令
- Windows PowerShell 实战指南-动手实验-10.10
- Android
- 三种工厂模式区别总结
- python代码发送邮件实例
- 一个Activity中多个Fragment实现沉浸式状态栏
- JSP页面格式化时间
- spring 托管 工厂创建对象
- java上传文件到微信服务器
- 使用netkit搭pppoe服务器
- leetcode 100 SameTree 3行