pre-network 网络预加载框架,android网络优化

版权声明:转载时请标明出处。https://blog.csdn.net/mhhyoucom https://blog.csdn.net/mhhyoucom/article/details/79089606

前言

现在android网络优化方案非常多,例如针对连接管理和缓存的优化方案,例如:okhttp,针对数据传输数据压缩的优化方案,例如:protobuf;今天介绍一个通过修改调用方式优化的方案:网络预加载框架- pre-network。

项目地址:https://github.com/woshiliyihang/pre-network

项目介绍

pre-network是一款android网络框架,更加准确的说法是观察者模式预处理器;它主要的特点是预处理网络加载,设计思想是使用观察者模式的订阅式网络框架。

软件架构

基于观察者模式的设计,每个网络请求相当于一个被观察者,每个使用这个网络请求地方只需要添加观察者,就可以获取网络请求数据,每个网络请求必须是唯一的,可以添加多个观察者。

安装教程

  1. 引用依赖
implementation 'com.liyihang:pre-network:1.3.0'

使用说明

  1. 发起网络请求
    dome当中MainActivity点击跳页按钮打开新activity时候首先执行网络请求,然后执行跳转。
        Map<String, String> headers=new HashMap<>();
        headers.put("headerInfo", "test");
        //第一个参数 是标识网络请求的唯一id,第二个参数是url, 第三个参数是请求参数,第四个参数是请求头部,第五个参数是请求方式。
        PreNetworkHelper.getInstance().addRequestObservable(new PNQuickRequest(url_id_only, "https://blog.csdn.net/mhhyoucom/","name=liyihang&age=18", headers, "GET"));

addRequestObservable 是简单封装唯一网络请求,可以根据项目请求使用自己的网络框架。这样网路请求将立即执行。

  1. 订阅这个网络请求
    dome中的OtherActivity就是要订阅这个网络请求。使用下面代码订阅:
        PreNetworkHelper.getInstance().addObserver(new UpdateUI(this));

UpdateUI 就是订阅者;

public class UpdateUI extends PNBaseObserver {

    private WeakReference<OtherActivity> activity;

    public UpdateUI(OtherActivity activity) {
        this.activity = new WeakReference<>(activity);
    }

    @Override
    public void pre() {//订阅回调开始
        // 删除网络请求被观察者,如果不删除一直保存在内存中
        PreNetworkHelper.getInstance().removeRequestObservable(MainActivity.url_id_only);
    }

    @Override
    public void result(String res) {//网络请求成功处理函数
        if (activity.get()==null)
            return;
        activity.get().sendStateSelf(PNBaseActivity.getMsgObj(10, res));
    }

    @Override
    public void error(String err) {//网络请求失败处理函数
        Toast.makeText(activity.get(), err, Toast.LENGTH_LONG).show();
    }

    @Override
    public void end() {// 订阅回调结束

    }

    @Override
    public String getId() {
        return MainActivity.url_id_only;//要订阅的网络请求唯一id
    }
}

所有回调都在UI线程中。

参与贡献

  1. 李一航

邮箱反馈

邮箱:[email protected]

猜你喜欢

转载自blog.csdn.net/mhhyoucom/article/details/79089606