Skip to content

dust/dabase

Repository files navigation

Build Status

dabase

dabase是一个封装了网络请求的库,其解决的核心问题是结构化rest风格的API接口调用以及网络图片加载过程。它基于okhttp(3.4.1)和universal-image-loader(1.9.5)等开源仓库。 也 全局 使用了 java.net.ResponseCache 规范的缓存机制

结构模型

BaseRequest(Uri, Parser, AsyncObserver)
    |
    |
    okhttp3.Request
            |
            |
            Call=OkHttpClient.newCall(request)
            Call.enqueue(new ResponseCallback(baseRequest))
                                |
                                |
                                ResponseCallback(onResponse|onFailure)
                                                |
                                                onResponse:Parser.parse(okhttp3.Response)
                                                onFailure(BaseException)
                                                |
                                                DefaultDeliverer.postResponse(baseRequest, result, ex)
                                                                    |
                                                                    |
                                                                AsyncObserver:
                                                                onSuccess(result)
                                                                onFailure(BaseException)
                                                                onAppError(AppException)
                                                                    |
                                                                    |
                                                                    notifyDataChanged()

ResponseCache

如果responseCacheSize大于0,则会开启 java.net.ResponseCache , 它是 全局 性的,会影响所有HttpURLConnection/HttpsURLConnection等相关方法,但它是受控于服务端Response的header字段中Cache-Control的设置值。

如果将BaseRequest.setShouldCache(false)后,将会强制不使用缓存。

    public static HttpRequestExecutor getInstance(Context ctx, final Handler handler, long responseCacheSize) {
        if (sInstance == null) {
            synchronized (lock) {
                if (sInstance == null) {
                    Cache cache = null;
                    try {
                        //AndroidShimResponseCache androidShimResponseCache = responseCacheSize > 0 ? AndroidShimResponseCache.create(ctx.getCacheDir(), responseCacheSize) : null;
                        if (responseCacheSize > 0L) {
                            HttpResponseCache.install(ctx.getCacheDir(), responseCacheSize);
                            HttpResponseCache responseCache = HttpResponseCache.getInstalled();
                            if (responseCache != null) {
                                cache = responseCache.getCache();
                            }
                        }
                    } catch (Throwable ex) {
                        DLog.wtf(ex, "AndroidShimResponseCache.create(%s, %d)", ctx.getCacheDir(), responseCacheSize);
                    }
                    sInstance = new HttpRequestExecutor(cache, new DefaultDeliverer(handler));
                }
            }
        }
        return sInstance;
    }

universalimageloader

BitmapLoader.getInstance().bind(imageView, url, placeHolderResId, decorator, maxWidth, maxHeight);

public void bind(final ImageView imageView, final String url, final int placeHolderResId, BitmapDisplayer decorator,
                     int maxWidth, int maxHeight);

About

android network utility(framework).

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages