zoukankan      html  css  js  c++  java
  • 《Android进阶之光》--网络编程与网络框架

    No1:

    Volley源码分析:

    Volley.newRequestQueue->

    RequestQueue.start()->

    CacheDispatcher.start()->CacheDispatcher.run()->

    NetworkDispatcher.start()->NetworkDispatcher.run()->

    RequestQueue.add()->

    BasicNetwork.performRequest()->

    HttpStack.performRequest()->

    Delivery.postResponse()->

    ExecutorDelivery.ResponseDeliveryRunnable->

    Request.deliverResponse()->

    Response.Listener.onResponse()->

    说明:

    Volley分为三类线程,分别是主线程、缓存调度线程和网络调度线程,其中网络调度线程默认开启4个。

    首先请求会加入缓存队列,缓存调度线程从缓存队列中取出请求。如果找到该请求的缓存响应就直接读取缓存的响应并解析,然后回调给主线程;

    如果没有找到缓存的响应,则将这条请求加入网络队列,然后网络调度线程会轮询取出网络队列中的请求,取出后发送HTTP请求,解析响应并将响应存入缓存,并回调给主线程。

    No2:

    OkHttp源码分析:

    OkHttpClient.newCall(request)->

    RealCall.enqueue->

    Dispatcher.enqueue->

    RealCall.execute->

    client.dispatcher().finished()->promoteCalls->

    AsyncCall.execute->getResponseWithInterceptorChain->getResponse()->

    HttpEngine.sendRequest->readResponse->

    RealCall.getResponse->

    HttpEngine.recover->

    No3:

    Okhttp连接池复用的核心就是用Deque<RealConnection>来存储连接,通过put、get、connectionBecameIdle和evictAll几个操作来对Deque进行操作,另外通过判断连接中的计数对象StreamAllocation来进行自动回收连接。

    No4:

    Retrofit注解分类

    1)HTTP请求方式注解:GET、POST、PUT、DELETE、HEAD、PATCH、OPTIONS、HTTP(可替换或扩展前7种)

    2)标记类注解:FormUrlEncoded、Multipart、Streaming(流)

    3)参数类注解:Header、Headers、Body、Path、Field、FieldMap、Part、PartMap、Query、QueryMap

    No5:

    Retrofit源码解析

    Retrofit.Builder()->

    Platform.get()->findPlatform->

    Retrofit.build()->

    Retrofit.create->loadServiceMethod->

    ServiceMethod.Builder->

    ExecutorCallAdapterFactory.get->

    ExecutorCallbackCall.enqueue->

    delegate.enqueue->OkHttpCall.enqueue->

    okhttp3.Call.enqueue->parseResponse->toResponse->

    GsonConverterFactory.responseBodyConverter->

    GsonResponseBodyConverter.convert->

    Call.enqueue方法主要做的就是用OkHttp来请求网络,将返回的Response进行数据转换并回调给UI线程

  • 相关阅读:
    【转】IOS开发:[1]Xcode5界面入门
    【转】Xcode中的iOS模拟器(iOS Simulator)的介绍和使用心得
    特征选择
    EM算法
    算法之美--3.2.3 KMP算法
    算法之美--3.2.2 MP算法
    图像质量评价方法PSNR+SSIM&&评估指标SROCC,PLCC
    C/C++二进制读写png文件
    大津法---OTSU算法
    一些优秀的面试笔试总结
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/8509500.html
Copyright © 2011-2022 走看看