pre-network 网络预加载框架,android网络优化
16lz
2021-01-26
前言
现在android网络优化方案非常多,例如针对连接管理和缓存的优化方案,例如:okhttp,针对数据传输数据压缩的优化方案,例如:protobuf;今天介绍一个通过修改调用方式优化的方案:网络预加载框架- pre-network。
项目地址:https://github.com/woshiliyihang/pre-network
项目介绍
pre-network是一款android网络框架,更加准确的说法是观察者模式预处理器;它主要的特点是预处理网络加载,设计思想是使用观察者模式的订阅式网络框架。
软件架构
基于观察者模式的设计,每个网络请求相当于一个被观察者,每个使用这个网络请求地方只需要添加观察者,就可以获取网络请求数据,每个网络请求必须是唯一的,可以添加多个观察者。
安装教程
- 引用依赖
implementation 'com.liyihang:pre-network:1.3.0'
使用说明
- 发起网络请求
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 是简单封装唯一网络请求,可以根据项目请求使用自己的网络框架。这样网路请求将立即执行。
- 订阅这个网络请求
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线程中。
参与贡献
- 李一航
邮箱反馈
邮箱:mhh.you@hotmail.com
更多相关文章
- [置顶] android wifi调试总结 theros AR6K命令小结 android wifi
- Android中不使用AIDL实现Service的远程调用
- okHttp3学习总结
- android简单的请求手机权限封装
- Android(安卓)2.2 API Demos -- 通过调用子Activity返回值
- Android(安卓)HttpClient用法
- Android(安卓)6.0以上系统使用RxPermissions申请动态权限
- android https 连接建立
- android emulator 通过代理访问web service