volley

Android网络通信:Volley(二)

余生长醉 提交于 2020-04-07 18:29:53
1、ImageRequest的用法 前面我们已经学习过了StringRequest和JsonRequest的用法,并且总结出了它们的用法都是非常类似的,基本就是进行以下三步操作即可: 1. 创建一个RequestQueue对象。 2. 创建一个Request对象。 3. 将Request对象添加到RequestQueue里面。 其中,StringRequest和JsonRequest都是继承自Request的,所以它们的用法才会如此类似。那么不用多说,今天我们要学习的ImageRequest,相信你从名字上就已经猜出来了,它也是继承自Request的,因此它的用法也是基本相同的,首先需要获取到一个RequestQueue对象,可以调用如下方法获取到: RequestQueue mQueue = Volley.newRequestQueue(context); 接下来自然要去new出一个ImageRequest对象了,代码如下所示: ImageRequest imageRequest = new ImageRequest( "http://developer.android.com/images/home/aw_dac.png", new Response.Listener<Bitmap>() { @Override public void onResponse(Bitmap

Volley源码分析(1)----Volley 队列

笑着哭i 提交于 2020-03-28 05:14:19
Android网络框架很多,但是基于Google自己的volley,无疑是优秀的一款。 网络框架,无外乎解决一下几个问题,队列,缓存,图片异步加载,统一的网络请求和处理等。 一.Volley 队列 启动 Volley的队列,首先我们看队列的启动:com.android.volley.toolbox.Volley.java /** * Creates a default instance of the worker pool and calls {@link RequestQueue#start()} on it. * * @param context A {@link Context} to use for creating the cache dir. * @param stack An {@link HttpStack} to use for the network, or null for default. * @return A started {@link RequestQueue} instance. */ public static RequestQueue newRequestQueue(Context context, HttpStack stack) { File cacheDir = new File(context.getCacheDir(),

Volley源码分析

痞子三分冷 提交于 2020-03-28 05:13:10
取消请求的源码分析: public void cancelAll(RequestFilter filter) { synchronized (mCurrentRequests) { for (Request<?> request : mCurrentRequests) { if (filter.apply(request)) { request.cancel(); } } } } /** * Cancels all requests in this queue with the given tag. Tag must be non-null * and equality is by identity. */ public void cancelAll(final Object tag) { if (tag == null) { throw new IllegalArgumentException("Cannot cancelAll with a null tag"); } cancelAll(new RequestFilter() { @Override public boolean apply(Request<?> request) { return request.getTag() == tag; } }); } 使用Volley的第一步,首先要调用 Volley

[Android]Volley源码分析(三)

a 夏天 提交于 2020-03-28 05:10:17
上篇看了关于Request的源码,这篇接着来看下RequestQueue的源码。 RequestQueue类图: RequestQueue是一个请求调度队列,里面包含多个NetworkDispatcher调度器与一个CacheDispatcher调度器 主要属性: mSequenceGenerator: 请求序号生成器 mWaitingRequests: Staging area for requests that already have a duplicate request in flight. 相当于一个等待队列,根据请求url来将以前发起过的请求先加入这个队列中。避免同样的请求多次发送。 mCurrentRequests: 正在被请求队列处理的请求集合 mCacheQueue: 请求缓存队列,请求可以被缓存也可以不缓存,保存可以缓存的请求 mNetworkQueue: 需要进行网络访问的请求队列 mCache: 可以保存与获取请求响应的缓存,把请求响应保存在disk中 mNetwork: 真正执行Http请求的网络接口 mDelivery: 将请求响应进行解析并交付给请求发起者 mDispatchers: 网络请求调度器,每一个调度器都是一个线程 mCacheDispatcher: 缓存调度器 主要方法: start(),启动所有调度器线程 1 /** 2 *

Use gradle compile volley framework

孤者浪人 提交于 2020-03-01 14:08:08
获取 gradle 工具 1、使用 android studio 中自带,(如:<android studio>\gradle\gradle-2.10\bin\gradle) 2、从 official site http://gradle.org/ download 获取 volley framework 1、获取 git,official site http://www.git-scm.com/ 2、使用命令克隆源码,git clone https://android.googlesource.com/platform/frameworks/volley compile 1、查看 build.gradle 文件中的 classpath 'com.android.tools.build:gradle:2.0.0-beta5' 版本,确保 2.0.0-beta5 小于或等于当前使用的 gradle 版本。 2、添加文件 local.properties,文件内容为 sdk.dir=<sdk> (如:sdk.dir=A\:\\Program\\Android\\sdk) 3、cmd 中进入 volley 源文件,输入 <gradle> bundleRelease (如:A:\Program Files\Android\Android Studio\gradle\gradle-2.10

Volley源码解析(二)

北城以北 提交于 2020-02-29 01:47:44
上一篇博客介绍了Volley的请求流程,本篇会分别介绍请求过程,缓存过程,回调过程 请求过程 从NetworkDispatcher的run方法开始分析 while ( true ) { Request < ? > request ; try { // Take a request from the queue. request = mQueue . take ( ) ; } catch ( InterruptedException e ) { // We may have been interrupted because it was time to quit. if ( mQuit ) { return ; } continue ; } try { // Perform the network request. NetworkResponse networkResponse = mNetwork . performRequest ( request ) ; // If the server returned 304 AND we delivered a response already, // we're done -- don't deliver a second identical response. if ( networkResponse . notModified &&

一口一口吃掉Volley(一)

眉间皱痕 提交于 2020-02-27 04:14:18
欢迎访问我的 个人博客 转发请注明出处: http://www.wensibo.top/2017/02/16/一口一口吃掉Volley(一)/ 本次编写的Volley教程现在看来其实已经跟不上时代了,但是技术总有它光辉的一面。所以想和大家一起通过源码解析的方式学习优秀开源项目的精髓。 本次教程将先会和大家一起了解一下Volley的前世今生,摸清他的底细之后再学会如何使用,我已经做好一个Volley的 Sample 了,欢迎你star或者fork,最后才从源码的角度上来分析Volley的工作流程。 网上关于Volley的文章很多,但是反复看了很久,值得推荐的依旧是 郭霖 的文章,写的真心不错。我也借鉴了他的很多思路,不过也做了修改,希望大家一起学习。 Android Volley完全解析(一),初识Volley的基本用法 Android Volley完全解析(二),使用Volley加载网络图片 Android Volley完全解析(三),定制自己的Request Android Volley完全解析(四),带你从源码的角度理解Volley Android官方Volley教程(英文好的同学可以自学) Volley的Github主页 瞧瞧Volley是何物 Volley简介 Google在2013年的I/O大会上(是的今年的IO大会很快就会发布android8.0了

一口一口吃掉Volley(二)

穿精又带淫゛_ 提交于 2020-02-27 04:14:03
欢迎访问我的 个人博客 转发请注明出处:http://www.wensibo.top/2017/02/17/一口一口吃掉Volley(二)/ 相信看了 第一篇教程 之后,你应该会对Volley有一个初步的了解了吧,那接下来就继续学习如何使用Volley进行开发吧! 配置Gradle 使用如下命令导入Volley库: compile 'com.mcxiaoke.volley:library:1.0.19' 如果你还是使用Eclipse进行开发的话,可以下载 volley的jar包 导入工程。 添加联网许可 在AndroidManifest.xml文件中添加联网的请求 <uses-permission android:name="android.permission.INTERNET"/> 使用StringRequest 如果你需要通过网络访问的资源属于String字符串的资源,那么使用StringRequest就最为简单了,只需按照如下步骤就行了。 ① 获取一个RequestQueue RequestQueue mQueue = Volley.newRequestQueue(this); ② 构造一个StringRequest对象 StringRequest stringRequest=new StringRequest("http://www.wensibo.top" , new

Volley获取json对象

倾然丶 夕夏残阳落幕 提交于 2020-02-24 07:07:16
url必须返回一个json文本,由于网上没有找到返回json的url,我用Tomcat写了一个json文件, 在这个文件夹下见一个以json后缀的json文件,内容是json文本,然后输入浏览器输入http://192.148.83.135:9999/hello/myfile.json就会出现你写的文本 public class MainActivity extends AppCompatActivity { private RequestQueue queues ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); queues = Volley.newRequestQueue(this); JsonObjectRequest jsonObjectRequest = new JsonObjectRequest("http://192.148.83.135:9999/hello/myfile.json", null, new Response.Listener<JSONObject>() { @Override public void onResponse

安卓大作业开发02--体温记录

烈酒焚心 提交于 2020-02-11 22:48:15
简单学习了一下Jsoup,但是发现爬不到所需的数据,偶然中发现了论坛大佬发布的API,于是使用API来获取数据。由于目前还不会制作表格,所以只对河北省的信息进行了可视化管理。 1、数据的获取 1、实体类的创建 根据API所返回的数据,设计如下实体类: package com.example.fightvirus; ​ import java.util.List; ​ public class MyJson { private String provinceName; private String provinceShortName; private int confirmedCount; private int suspectedCount; private int curedCount; private int deadCount; private String comment; private int locationId; private List<City> cities; ​ @Override public String toString() { return "MyJson{" + "provinceName='" + provinceName + '\'' + ", provinceShortName='" + provinceShortName + '\'' +