美文网首页Android知识Android开发
从无到有 项目中用到的封装网络框架(一)

从无到有 项目中用到的封装网络框架(一)

作者: 溢出的幸福 | 来源:发表于2016-11-17 12:13 被阅读0次

    一个基于Xutils3的网络封装

    用过xutils的朋友都知道网络请求的回调是在实现了Callback.CommonCallBack<T>接口;然后通过实现onSuccess(),onError(),onFinished(),onCancelled()方法来处理返回的结果;首先看下后台给的数据结构。如下图所示这是我们后台固定的一个数据结构。Msg是用于判断成功还是失败的描述信息,Data是我们要获取的具体内容,Code表示返回的一个处理码

    返回的数据.png

    首先处理封装Callback.CommonCallBack<>接口,要处理成功以后返回的msg,和处理失败以后返回的msg。首先实现Callback.CommonCallback<String>接口  在返回的onSuncess(String result)的方法里面把回调的result转为jsonobject对象,在通过json解析转成对象,并且把通过code校验把这个对象通过Handler发射出去,在onError里面一样发送错误请求的message,统一在外层回调处理。这样的话我们的构造参数就需要3个了,第一个用于gson解析得到对象,第二个用于发送成功失败得到的数据,第三个是在哪个what里面执行(错误的object在what+1里面进行处理)。

    如上所示,我们就可以自己在实现hander以后自己外层处理网络请求。这样封装的话也会有点问题就是如果有外层的acivity类finish()以后,如果我们的message还没取出来,message就持有handler的引用,handler就会持有当前acivity的引用,得不到释放,容易发生内存泄露,所以我们可以用弱引用给handler在加一层封装防止内存泄露

    综合应用 如下图所示 用Ok的话也可以按照这样的模式在封装一次

    相关文章

      网友评论

        本文标题:从无到有 项目中用到的封装网络框架(一)

        本文链接:https://www.haomeiwen.com/subject/beozsttx.html