# 简介:
Netroid是一个基于[Volley](https://www.captechconsulting.com/blog/raymond-robinson/google-io-2013-volley-image-cache-tutorial)
实现的Android Http库。提供异步执行网络请求、缓存返回结果、批量图片加载、大文件断点下载的常见Http交互功能。致力于避免每个项目重复开发基础Http功能,实现显著地缩短开发周期的愿景。
# 实现原理:
Netroid自启动后创建由开发者指定的线程数目,每个线程由 **BlockingQueue** 进行阻塞。当有新的请求进入队列时,其中一个线程将被唤醒并获得请求对象,
然后开始执行,执行完成后线程重新回到阻塞状态,等待下一次唤醒。Netroid实现了强大的状态回调接口在请求执行过程中进行通知,
包括开始、完成、成功、重试、失败、取消、执行网络操作、应用缓存、下载进度九种状态回调,开发者可方便地获取请求的执行情况,对用户进行友好提醒。
# 使用方法
Netroid库的主入口是`RequestQueue`,通常情况下在Application.onCreate()方法中初始化,作为全局单例对象存放:
Network network = new BasicNetwork(new HurlStack(Const.USER_AGENT, null), HTTP.UTF_8);
// RequestQueue在创建时可指定使用HttpURLConnection还是HttpClient来执行请求,同时可指定硬盘缓存的目录位置及上限大小
RequestQueue mQueue = new RequestQueue(network, 4,
new DiskCache(new File(ctx.getCacheDir(), Const.HTTP_DISK_CACHE_DIR_NAME), Const.HTTP_DISK_CACHE_SIZE));
mQueue.start();
在需要发起Http请求时,只需要创建一个`Request`实例,添加入RequestQueue即可,Netroid会部署并在线程允许的情况下执行,并通过Listener的各个接口回调执行结果到主线程:
StringRequest request = new StringRequest(url, new Listener<String>() {
ProgressDialog mPrgsDialog;
@Override
public void onPreExecute() {
mPrgsDialog = ProgressDialog.show(Activity.this, null, "loading...", true, true);
}
// cancel the dialog with onFinish() callback
@Override
public void onFinish() {
mPrgsDialog.cancel();
}
@Override
public void onSuccess(String response) {
Toast.makeText(Activity.this, "response is : " + response, 2000).show();
}
@Override
public void onError(NetroidError error) {
Toast.makeText(Activity.this, error.getMessage(), 2000).show();
}
@Override
public void onCancel() {
Toast.makeText(Activity.this, "request was cancel", 2000).show();
}
});
// add the request to RequestQueue, will execute quickly if has idle thread
mQueue.add(request);
# 图片加载
使用Netroid提供的`ImageLoader`可以非常方便地实现图片加载功能,ImageLoader需要在初始化RequestQueue时创建,因为其作为Netroid的一个组件,依赖于Netroid的请求调用机制:
// ImageLoader在创建时可指定图片的内存缓存方案
ImageLoader mImageLoader = new SelfImageLoader(
mRequestQueue, new BitmapImageCache(Const.HTTP_MEMORY_CACHE_SIZE));
在需要加载图片的地方,只需要调用ImageLoader的方法即可:
ImageLoader.ImageListener listener = ImageLoader.getImageListener(imageView, 0, 0);
mImageLoader.get(url, listener, 0, 0);
Netroid提供了继承自ImageView的NetworkImageView来专门处理ListView、GridView图片频繁刷新加载的问题:
...Inner Adapter
@Override
public View getView(int position, View convertView, ViewGroup parent) {
NetworkImageView imvCover = (NetworkImageView) convertView.findViewById(R.id.imvCover);
imvCover.setImageUrl(book.getImageUrl(), mImageLoader);
}
...
# 大文件下载
Netroid实现的 `FileDownloader` 对断点续传方式的大文件下载提供了支持,其内部维护一个下载队列,所以在创建时需要指定最大并行任务数,
超出限制的任务将自动进入等待队列。在设置最大并行任务数后,开发者只需要往队列中不断添加任务,其它的事情均由 **FileDownloader** 完成。
FileDownloader的使用方法跟ImageLoader相同,在Application中创建一个单例的对象,在需要使用的地方调用接口:
FileDownloader mFileDownloader = new FileDownloader(mRequestQueue, 1);
FileDownloader将在任务添加成功时返回 `DownloadController` 实例对象,这个对象提供了查看任务执行状态、暂停、继续、取消四项必需的操作功能,
开发者只需要持有这个对象,即可随时掌控任务的所有情况。
public static FileDownloader.DownloadController addFileDownload(String storeFilePath, String url, Listener<Void> listener) {
return mFileDownloader.add(storeFilePath, url, listener);
}
# 关于项目
Netroid开源于[Github](https://github.com/vince-styling/Netroid),提供完善的[中文文档](http://netroid.cn/)指引,所有更新都会第一时间发布于项目主页内,大家在使用过程中发现问题时或有不明白的地方,可以反馈到github,交流以促进项目功能的完善。
为了让开发者快速了解Netroid的所有功能点,可以下载[演示程序](http://netroid.cn/attach/netroid-sample-1.2.1.apk)先行查看效果。
这个垃圾站连markdown语法都不支持,堕落啊。算了,这篇文章只是方便索引,大家可去开源中国上查看详情http://my.oschina.net/styling/blog/261893。
当然,最舒服的做法是直接访问Netroid的官方文档站:http://netroid.cn,你懂的。
相关推荐
com.android.volley:volley volley.jar
基于volley框架开发的网络请求框架,封装有网络请求,数据库,缓存登模块
基于Android Volley的网络请求工具
android volley 实现上传文件到服务器,通过表单提交的方式,如果gradle的问题,最好重新建个项目,考进去代码,
android volley 安卓资源jar包,下载吧。
Android单元测试,结合一些测试框架(如:Robolectric、Mockito等)与Volley网络请求的单元测试
android volley 实现上传文件到服务器,通过表单提交的方式
1. Volley主页 ...4. Google I/O 2013 – Android : Volley: Easy, Fast Networking for Android http://y-anz-m.blogspot.jp/2013/05/google-io-2013-android-volley-easy-fast.html?m=1
Android Volley 支持多个volley
android-volley源码代码 android Volley ---------- This is an unofficial mirror for [android volley library](https://android.googlesource.com/platform/frameworks/volley), the source code will ...
Android Volley Jar,Android Volley框架是android开发中不可或缺的一个重要框架,想使用Android开发更加便捷的途径就是使用Volley框架了。 Android Volley Jar框架简介 我们平时在开发Android应用的时候不可避免...
2013年Google I/O大会上推出了一个新的网络通信框架——Volley。Volley可是说是把...除了简单易用之外,Volley在性能方面也进行了大幅度的调整,它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作
Volley实现文件的上传
Android使用Volley实现图片轮播,使用了ImageLoader比较好的例子
本库是一款基于RxJava2+Retrofit2实现简单易用的网络请求框架,结合android平台特性的网络封装库,采用api链式调用一点到底,集成cookie管理,多种缓存模式,极简https配置,上传下载进度显示,请求错误自动重试,请求携带...
Volley实例,实现数据的请求和图片的请求,适配到listview 中;使用volley实现不用考虑内存溢出和效率问题!很方便
Volley是一个由Google官方推出的网络通信库,它使得Android进行网络请求时更加方便、快速、健壮,同时对网络图片加载也提供了良好的支持。
今天学习使用了网络加载库Volley,先说下Volley库的地址: https://github.com/mcxiaoke/android-volley。这里是一个VolleyDemo。
Volley_下载网页 volley实现下载网页数据
android volley