正文
finish
(
"not-modified"
);
}
else
{
Response
volleyError1
=
request
.
parseNetworkResponse
(
e
);
request
.
addMarker
(
"network-parse-complete"
);
if
(
request
.
shouldCache
()
&&
volleyError1
.
cacheEntry
!=
null
)
{
//将响应结果存入缓存
this
.
mCache
.
put
(
request
.
getCacheKey
(),
volleyError1
.
cacheEntry
);
request
.
addMarker
(
"network-cache-written"
);
}
request
.
markDelivered
();
this
.
mDelivery
.
postResponse
(
request
,
volleyError1
);
}
}
}
catch
(
VolleyError
var7
)
{
var7
.
setNetworkTimeMs
(
SystemClock
.
elapsedRealtime
()
-
startTimeMs
);
this
.
parseAndDeliverNetworkError
(
request
,
var7
);
}
catch
(
Exception
var8
)
{
VolleyLog
.
e
(
var8
,
"Unhandled exception %s"
,
new
Object
[]{
var8
.
toString
()});
VolleyError
volleyError
=
new
VolleyError
(
var8
);
volleyError
.
setNetworkTimeMs
(
SystemClock
.
elapsedRealtime
()
-
startTimeMs
);
this
.
mDelivery
.
postError
(
request
,
volleyError
);
}
}
}
网络调度线程也是从队列中取出请求并且判断是否被取消了,如果没取消就去请求网络得到响应并回调给主线程。请求网络时调用this.mNetwork.performRequest(request),这个mNetwork是一个接口,实现它的类是BasicNetwork,我们来看看BasicNetwork的performRequest()方法:
public
NetworkResponse performRequest
(
Request
?
>
request
)
throws
VolleyError
{
long
requestStart
=
SystemClock
.
elapsedRealtime
();
while
(
true
)
{
HttpResponse
httpResponse
=
null
;
Object
responseContents
=
null
;
Map
responseHeaders