Volley使用时com.android.volley.NoConnectionError: java.io.InterruptedIOException

      维护一个老项目时,发现经常第一请求某个接口时会弹一个“没有网络” Toast。明明是有网的呀,为啥只是偶尔出现。带着疑问一路追踪下去

Volley使用时com.android.volley.NoConnectionError: java.io.InterruptedIOException_第1张图片


原来Volley 报出了个“com.android.volley.NoConnection error, java.io.InterruptedIOException”,为什么回报这个错误呢?我们来看一下源码:

Volley使用时com.android.volley.NoConnectionError: java.io.InterruptedIOException_第2张图片

发现RequestQueue初始化时已经 start()了,而我工程里调用接口时又 start()了一次,那么是不是它的原因呢?我们进入 start()方法里看一下:

Volley使用时com.android.volley.NoConnectionError: java.io.InterruptedIOException_第3张图片

 这里我们直接看到,先走 stop() 方法,我们继续跟进看看它做了什么:

Volley使用时com.android.volley.NoConnectionError: java.io.InterruptedIOException_第4张图片


Volley使用时com.android.volley.NoConnectionError: java.io.InterruptedIOException_第5张图片

Interrupt this thread before running actions so that other threads that observe the interrupt as a result of an action will see that this thread is in the interrupted state.

到此我恍然大悟,原来如此!

你可能感兴趣的:(Volley使用时com.android.volley.NoConnectionError: java.io.InterruptedIOException)