pre-network android网络预加载框架

前言

现在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. 李一航
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,015评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,107评论 19 139
  • 不知从何说起,现在的我,想你时心情已经不再沉重了。天气预报上说明后两天都会有很大的雨呢,而每逢阴天下雨,你的关节都...
    跷腿的小鹅阅读 676评论 0 2
  • 文/风梦明珠 九点就躺着,躺着还是没能睡着。很想吃点安眠药或者镇静抗焦虑的药让自己安静入睡。 刚刚不小心点到了一个...
    风梦明珠阅读 376评论 6 8
  • 今天有位宝妈说我觉得孩子的健康第一,听话第二,成绩第三的时候,我瞬间就想,听话的孩子真的好吗? 生活中,我们常常会...
    纤陌颜阅读 254评论 0 1