前言

现在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 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 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. 李一航

邮箱反馈

邮箱:mhh.you@hotmail.com

更多相关文章

  1. [置顶] android wifi调试总结 theros AR6K命令小结 android wifi
  2. Android中不使用AIDL实现Service的远程调用
  3. okHttp3学习总结
  4. android简单的请求手机权限封装
  5. Android(安卓)2.2 API Demos -- 通过调用子Activity返回值
  6. Android(安卓)HttpClient用法
  7. Android(安卓)6.0以上系统使用RxPermissions申请动态权限
  8. android https 连接建立
  9. android emulator 通过代理访问web service

随机推荐

  1. Android ExpandableListView的使用
  2. SQLite 锁机制与事务简介
  3. 【Android】Android控件之Seekbar拖动条
  4. android linearlayout 把控件view置底部(
  5. Android 自定义圆角按钮
  6. android中设置分隔线几种方法
  7. Android 中的盒子模型
  8. Android常用布局属性
  9. 我的Android进阶之旅------>Android 众多
  10. 浅析Android手机卫士读取联系人