• 《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线程

  • 相关阅读:
    类加载,初始化
    jvm classLoader architecture
    只选择年份的下拉菜单
    spring框架学习(二)依赖注入
    spring框架学习(一)
    JSP 过滤器
    JSP9个内置对象
    JSP 动作元素
    众数
    基于excel9.h的excel处理
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/8509500.html
Copyright © 2020-2023  润新知