首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我的变量在I volley调用成功后被设置为null

在I volley调用成功后,变量被设置为null的原因可能是由于以下几种情况:

  1. 作用域问题:请确保变量的作用域正确。如果变量是在方法内部声明的,并且在方法外部被引用,那么可能会导致变量在方法执行完后被销毁,从而被设置为null。可以尝试将变量声明在方法外部或者使用类成员变量来解决该问题。
  2. 异步调用:I volley是一个异步网络请求库,它的请求是在后台线程中执行的。当请求成功返回后,会通过回调函数来处理响应数据。如果在回调函数中对变量进行操作,而该回调函数是在主线程中执行的,那么可能会出现变量被设置为null的情况。这是因为在网络请求完成之前,主线程可能已经执行完毕,导致变量被销毁。可以尝试在回调函数中检查变量是否为null,并及时处理。
  3. 请求失败:如果I volley的请求失败了,可能会导致变量被设置为null。可以通过查看请求的返回状态码、错误信息等来确定请求是否成功。如果请求失败,可以尝试重新发送请求或者进行错误处理。

综上所述,当变量在I volley调用成功后被设置为null时,可能是由于作用域问题、异步调用或请求失败等原因导致的。可以根据具体情况进行排查和处理。

相关搜索:为什么我的end=变量没有被设置为1?Java为什么我的for循环在i为4之后将i设置为0?为什么调用useState定义的setter函数后,状态会立即设置为null?为什么在等待承诺后没有设置我的变量为什么我的服务器设置在发布后没有被读取?为什么OnLevelWasLoaded ()被调用两次,为什么我的变量在每次调用中都有不同的值?C函数:为什么我的变量在设置后立即改变它们的值?为什么在切换页面时,我的全局变量一直被设置为默认值?当我在我的配置中将其设置为路径时,为什么SQLALCHEMY_DATABASE_URI被设置为“sqlite:/:memory:”?Laravel:为什么我的变量在控制器的构造函数中时没有被设置?为什么我的按钮在繁重的计算后被禁用,而它在计算之前首先被调用?为什么我的数组在设置为输入值后变成了用',‘分隔的字符串?为什么输入变量在我的递归调用过程中会改变,即使它没有被重新赋值?Wix webhooks -为什么我的回调URL操作方法在Wix中的事件发生后没有被调用?为什么在我的div中设置了高度和宽度为0后,里面有一个奇怪的空格?为什么我的状态在默认情况下被设置为一个空数组,它仍然是欠定义的?我已经为我的单页面应用程序使用了react-router。为什么我的页面在导航到另一个页面后被刷新?为什么我在检查器的脚本顶部设置一个int变量的值为0,这个值是1呢?在我的方法中,变量被设置为false,一旦方法运行,它应该更改为True。但事实并非如此我需要创建一个发送电子邮件的函数,为什么当我在main中调用它以确认它是否已发送时,它显示为null?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

volley请求原理

Volley Volley 是 Google 推出的 Android 异步网络请求框架和图片加载框架。在 Google I/O 2013 大会上发布。...流程图 Volley 请求流程图 上图是 Volley 请求时的流程图,在 Volley 的发布演讲中给出,我在这里将其用中文重新画出。 4....在 Handler 对应线程中传输缓存调度线程或者网络调度线程中产生的请求结果或请求错误,会在请求成功的情况下调用 Request.deliverResponse(…) 函数,失败时调用 Request.deliverError...通过构造函数的 listener 传参,支持请求成功后的 onResponse(…) 回调。...我个人认为的不足之处 缓存的再验证方面,在构建If-Modified-Since请求首部时,Volley 使用了服务端响应的Date首部,没有使用Last-Modified首部。

2.2K60

Volley源码分析学习

【扩展】关于 User Agent 通过代码我们发现如果是使用 AndroidHttpClient,Volley 还会将请求头中的 User-Agent 字段设置为 App 的 packageName/...= null) { //请求成功后,将处理结果String回调给成功监听器 mListener.onResponse(response);...ETags:它和if-None-Match(HTTP协议规格说明定义ETag为“被请求变量的实体值”,或者是一个可以与Web资源关联的记号)常用来判断当前请求资源是否改变。...如果这时候被取消,就直接结束分发 接着判断响应结果是否成功(即判断Response中的VolleyError属性是否为空),如果成功,就调用Request中的deliverResponse方法,把Response...= null) { //回到响应成功监听 mListener.onResponse(response); } } 如果不成功就调用

2K60
  • Android Volley 源码解析(一),网络请求的执行流程

    一、Volley 简介 ---- Volley 是 Google 在 2013 年的 I/O 大会上推出的 「Android 异步网络请求框架和图片加载框架」,它的设计目标就是去进行 数据量不大,但 通信频繁...默认情况下,每条请求都是应该缓存的,当然我们也可以调用 Request 的 setShouldCache() 方法来进行设置。...Request 被添加到缓存队列中后,在后台等待的缓存线程就要开始运行起来了,我们看下 CacheDispatcher 的 run() 方法究竟是怎么实现的。...,在这里总结一下,可以看到在初始化了 Cache 之后,有一个 while(true) 循环,说明缓存线程是始终执行的,接着会在缓存中取出响应结果,如果为 null 的话,就将其加入到网络请求队列中,如果不为空的话...需要注意的是在我标注的第一个地方,调用了 Stack 的 executeRequest() 方法,这里的 Stack 就是之前调用 Volley.newRequestQueue() 所创建的实例,前面也说过了这个对象的内部是使用了

    1.3K40

    Android面试题含答案「建议收藏」

    当我们通过startService启动时候,通过intent传值,在onStartCommand()方法中获取值的时候,一定要先判断intent是否为null。...IO 和 NIO这两个都是Java中的概念,如果我从硬盘读取数据,第一种方式就是程序一直等,数据读完后才能继续操作这种是最简单的也叫阻塞式IO,还有一种是你读你的,程序接着往下执行,等数据处理完你再来通知我...如果直到2MSL,Client都没有再次收到FIN,那么Client推断ACK已经被成功接收,则结束TCP连接。 【问题3】为什么不能用两次握手进行连接?...在这种情况下,C认为连接还未建立成功,将忽略S发来的任何数据分 组,只等待连接确认应答分组。而S在发出的分组超时后,重复发送同样的分组。这样就形成了死锁。...服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75分钟发送一次。

    1.4K20

    Android训练课程(Android Training) - 使用Volley传输网络数据(Transmitting Network Data Using Volley)

    当你添加请求到队列中,它被缓存线程获拾取和分类: 如果请求可以从缓存中服务,缓存中的原始响应内容被在缓存进程中解析,并且解析后的响应内容被传递到主线程。...注意哪些 昂贵的操作,比如阻塞I/O,和解析/解码,都是在工作线程中完成的。你可以在任何线程中添加请求,但是响应总是被传递到主线程中。 图表 1 插图说明一个请求的生命周期: ? 图 1....请求的生命周期. 中断一个请求(Cancel a Request) 要中断一个请求, 在你的请求对象上 调用 cancel()方法.一旦被中断后,Volley会确保 你的响应处理器 绝对不被调用。...() 方法是否已经被调用,或者其他自卫性的样板代码。...如果你 依赖 你的响应处理器,以变动一个状态或者踢开一些步骤,你需要记得这些。再次强调,在终止后相应处理绝不会被调用。

    2.2K00

    Android常用库源码解析

    网络请求是通过url打开连接,返回一个HttpURLConnection对象,进行网络请求的。加载得资源后转换到主线程并进行回调设置给imageview。 glide为什么有lru还会内存溢出。...因此我最终替换为了OkHttp volley原理 主线程中调用RequestQueue的add()方法来添加一条网络请求,这条请求会先被加入到缓存队列当中,如果发现可以找到相应的缓存结果就直接读取缓存并解析...为什么说Volley适合数据量小,通信频繁的网络操作 volley中为了提高请求处理的速度,采用了ByteArrayPool进行内存中的数据存储的,如果下载大量的数据,这个存储空间就会溢出,所以不适合大量的数据...然后是开发者使⽤ addNetworkInterceptor(Interceptor) 所设置的,它们的⾏为逻辑和使⽤ addInterceptor(Interceptor) 创建的⼀样,但由于位置不同...(有的话被回收了,没有的话就没有被回收) 如果Activity没有被回收,调用GcTigger.runGc方法运行GC,如果这时候还没有被回收,那就说明Activity可能已经泄露。

    1.1K10

    Android Volley 源码解析(三),图片加载的实现

    一、图片加载的基本用法 ---- 在进行源码解析之前,我们先来看一下 Volley 中有关图片加载的基本用法。...URL 地址 2、图片请求成功的回调,这里我们将返回的 Bitmap 设置到 ImageView 中 3、4 分别用于指定允许图片最大的宽度和高度,如果指定的网络图片的宽度或高度大于这里的值,就会对图片进行压缩...在 ImageListener 中传入所加载图片的 URL,以及图片占位符和加载失败后显示的图片,最后调用 ImageLoader.get() 方法便能进行图片的加载。...先进行一些容错性的处理,然后调用 ImageLoader 来获取对应的 bitmap,最后将其设置给 NetworkImageView....总结 Volley 源码解析系列,到这里就全部结束了,这是我写过最长的系列文章了,从一开始 Volley 源码的阅读,到之后的代码整理以及现在的文章输出,花了我差不多一个星期的时间,不过对于网络加载和图片加载有了更深的理解

    85520

    Android ListView异步加载图片乱序问题,原因分析及解决方案

    那么目前程序的思路其实是很简单的,我们在ListView的getView()方法中开启异步请求,从网络上获取图片,当图片获取成功就后就将图片显示到ImageView上面。看起来没什么问题对吗?...其实如果你仔细通读了上一篇文章就能知道,getView()方法中传入的第三个参数其实就是ListView的实例,那么这里我们定义一个全局变量mListView,然后在getView()方法中判断它是否为空...获取到控件实例后判断下是否为空,如果不为空就让图片显示到控件上。...但是在NetworkImageView当中就可以这么任性,仅仅调用cancelRequest()方法把请求取消掉就可以了,这主要是得益于Volley的出色设计。...由此可见即使是Volley也无法做到中断一个正在执行的线程,如果有一个线程正在执行,Volley只会保证在它执行完之后不会进行回调,但在调用者看来,就好像是这个请求就被取消掉了一样。

    1.7K100

    Android Volley完全解析(一),初识Volley的基本用法

    Android开发团队也是意识到了有必要将HTTP的通信操作再进行简单化,于是在2013年Google I/O大会上推出了一个新的网络通信框架——Volley。...://android.googlesource.com/platform/frameworks/volley 下载完成后将它导入到你的Eclipse工程里,然后再导出一个jar包就可以了。...RequestQueue内部的设计就是非常合适高并发的,因此我们不必为每一次HTTP请求都创建一个RequestQueue对象,这是非常浪费资源的,基本上在每一个需要和网络交互的Activity中创建一个...其中,目标服务器地址我们填写的是百度的首页,然后在响应成功的回调里打印出服务器返回的内容,在响应失败的回调里打印出失败的详细信息。...很遗憾,StringRequest中并没有提供设置POST参数的方法,但是当发出POST请求的时候,Volley会尝试调用StringRequest的父类——Request中的getParams()方法来获取

    1.8K50

    Volley源码解读

    2.调用stop方法关闭当前所有请求线程后,再重新开启1个缓存请求线程和4个网络请求线程。...BlockingQueue,它的特点就是从队列里取元素的时候,如果队列为空,则调用此方法的线程会挂起,直至队列有元素可取,线程才会继续运行。...= null) { listener.onErrorResponse(error); } } 哦,ErrorListener这个在 Volley使用方式 阶段我们可以看到,我们也实现他了...五、问题 1.为什么说Volley只适合于小数据请求(不超过3M)?...从源码中我们可以得知,网络请求线程只有4个,缓存请求线程只有1个,如果请求大数据,那就导致线程在一定的时间内被占用,5个线程很容易被用完,再有请求时回导致堵塞,UI体验较差。

    70370

    Volley请求

    Android开发团队也是意识到了有必要将HTTP的通信操作再进行简单化,于是在2013年Google I/O大会上推出了一个新的网络通信框架——Volley。...RequestQueue内部的设计就是非常合适高并发的,因此我们不必为每一次HTTP请求都创建一个RequestQueue对象,这是非常浪费资源的,基本上在每一个需要和网络交互的Activity中创建一个...其中,目标服务器地址我们填写的是百度的首页,然后在响应成功的回调里打印出服务器返回的内容,在响应失败的回调里打印出失败的详细信息。...很遗憾,StringRequest中并没有提供设置POST参数的方法,但是当发出POST请求的时候,Volley会尝试调用StringRequest的父类——Request中的getParams()方法来获取...连个设置POST参数的方法都没有。但是不要忘记,Volley是开源的,只要你愿意,你可以自由地在里面添加和修改任何的方法,轻松就能定制出一个属于你自己的Volley版本。 4.

    1.8K70

    Android Volley完全解析(四),带你从源码的角度理解Volley

    这就要回顾一下Volley的用法了,还记得吗,使用Volley的第一步,首先要调用Volley.newRequestQueue(context)方法来获取一个RequestQueue对象,那么我们自然要从这个方法开始看起了...); } 这个方法仅仅只有一行代码,只是调用了newRequestQueue()的方法重载,并给第二个参数传入null。...14行调用了HttpStack的performRequest()方法,这里的HttpStack就是在一开始调用newRequestQueue()方法是创建的实例,默认情况下如果系统版本号大于9就创建的HurlStack...其中在第22行调用了Request的deliverResponse()方法,有没有感觉很熟悉?...我们在主线程中调用RequestQueue的add()方法来添加一条网络请求,这条请求会先被加入到缓存队列当中,如果发现可以找到相应的缓存结果就直接读取缓存并解析,然后回调给主线程。

    1.2K80

    浅谈Volley请求

    我们重点看参数二 参数二我们可以明显看到了一个数 那就是规定默认磁盘缓存的大小时5M 所以我们在创建一个请求队列时 第一个参数得到的结论是 1.volley文件夹是在这里创建的, 2....回过头来 我们再来看volley类代码 Network network = new BasicNetwork(stack); 这一行代码参数的好像在哪里见过 没错就是默认给我们传过来的值就是null 这行代码的上面...这里的线程池可以优化 这里可以看到volley里的线程池是由数组组成 并且默认的线程数为四个 还可以看到第四个参数 new ExecutorDelivery(new Handler(Looper.getMainLooper..., mNetworkQueue, mCache, mDelivery 有四个参数 第三个和第四个参数是在创建队列的时候调用 第一和第二个参数是在RequestQueue类里面已经初始化好了 这两个队列的意思是首先看缓存队列里面有没有请求...的值 我们已经知道是四了 意思是创建四个网络分发器 所以我们start方法里一次性启动了五条线程 以上这些内容就是我们在创建一个请求队列时volley帮我们做的所有事情 也就是开篇讲的mRequestQueue

    66830

    继续封装个 Volley 组件前言二次封装Github地址

    前言 封装了这么多组件,一步步走过来,我已经有了自己一定习惯下的封装思路了,可能代码写得并不是很好,设计得不是很合理,内部职责划分不是很明确。 但,我热衷的封装思想是:一条调用链使用。...至于为什么需要二次封装 Volley,这篇就不扯了,反正每个组件的封装肯定是来源于有这方面的需求。 二次封装 同样,DVolley 组件你需要了解的入口也就是:DVolley ?...Volley_get.png post 方法支持的 api 跟 get 一样,也就是设置下 tag(用于取消该请求),设置下请求参数,请求头,然后调用 enqueue(),内部会根据队列情况自动发起请求...,可设置回调,回调接收一个泛型参数,内部会自动根据泛型解析 json 数据后在回调方法中返回实体类数据。...所以,其实,封装的组件做的事并不多,就是将 Volley 的使用流程控制起来,提供调用链的使用方式。

    1.1K20

    笔记12 | 复习Volley(一)基本概念和用法

    ,在2013年Google I/O大会上推出了一个新的网络通信框架——Volley。...HTTP的请求类型通常有两种,GET和POST,先来学习GET: 首先需要获取到一个RequestQueue对象,可以调用如下方法获取到: RequestQueue mQueue = Volley.newRequestQueue...我们不必为每一次HTTP请求都创建一个RequestQueue对象,这是非常浪费资源的,基本上在每一个需要和网络交互的Activity中创建一个RequestQueue对象就足够了。...http://www.baidu.com", //http请求地址 new Response.Listener() { //服务器响应成功的回调...很遗憾,StringRequest中并没有提供设置POST参数的方法,但是当发出POST请求的时候,Volley会尝试调用StringRequest的父类——Request中的getParams()方法来获取

    83740

    Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案

    如果在加载的时候,进行旋转,则会发生错误,异常退出(退出原因:dialog.dismiss()时发生NullPointException,因为与当前对话框绑定的FragmentManager为null,...总使用了Volley去加载 了一张美女照片,然后在onDestroy中对Bitmap进行存储,在onCreate添加一个或者恢复一个Fragment的引用,然后对Bitmap进行读取和设置。...首先说一下探索过程: 起初,我认为此时旋转无非是再启动一次线程,并不会造成异常,我只要即使的在onDestroy里面关闭上一个异步任务就可以了。...销毁 if (activity == null) { mLoadingDialog.dismiss(); } // 设置为当前的Activity this.activity =...中,如果没有开启任务(第一次进入),开启任务;如果已经开启了,调用setActivity(this); 在onSaveInstanceState把当前任务加入Fragment 我设置了等待5秒,足够旋转三四个来回了

    2.1K20
    领券