专栏名称: 安卓开发精选
伯乐在线旗下账号,分享安卓应用相关内容,包括:安卓应用开发、设计和动态等。
目录
相关文章推荐
51好读  ›  专栏  ›  安卓开发精选

Android 网络编程(4): 从源码解析Volley(下)

安卓开发精选  · 公众号  · android  · 2016-08-21 08:50

正文

请到「今天看啥」查看全文


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







请到「今天看啥」查看全文