上门洗车APP — Android客户端开发 前言及业务简介
上门洗车APP — Android客户端开发 之 网络框架封装介绍(一)
本篇接着给大家分享网络框架封装,相信感兴趣的朋友已经对上篇博文中的一些开源项目有了些许了解,这里继续为大家介绍关于GenericDataManager 通用网络管理类中的 dataRequest 方法 和 请求参数封装类 RequestParameterFactory 。
在上篇博文中我们有介绍 dataRequest 中传入了一些参数,且使用了泛型,下面就给大家介绍传入的详细参数:
/**
-
该方法封装了网络数据请求和数据解析
-
并传入回调接口
-
@param requestId 请求ID
-
@param requestType 请求类型(此处根据传入的常量只提供了get请求和post请求)
-
@param urlString 请求URL
-
@param mParams 请求参数
-
@param parser 通用数据解析抽象解析器
-
@param mCallback 自定义接口回调
*/
public void dataRequest(final int requestId,String requestType,String urlString,RequestParams mParams,
final AbstractParser mParser,final IRequestCallback mCallback)
这里主要给大家说明两个参数,即 final AbstractParser mParser 和 final IRequestCallback mCallback ,关于 IRequestCallback 上篇已经介绍过 ,该类是定义的回调接口,该接口中的方法定义目的就是为了让Activity实现做数据回调处理。
那 AbstractParser 是个什么玩意呢 ?
这里先说一下项目中服务器传递过来的 JSON 数据格式,本着规范易读,维护性好,管理方便的原则,我们统一了JSON格式,如下图一、图二中的介绍:
图 一
图 二
也就是说数据格式中的 message、status、data 三个字段是固定的,message为String类型,status为int类型,而data呢,有可能是jsonObject 或 者jsonArray,故每从服务器端发出一条请求,若请求成功,则返回格式都如上图二所示,数据在data中。
所以此处我们定义一个model,即Result类,来看下:
/**
-
@author gao_chun
*/
public class Result {
private int status;//服务器返回状态码
private String message;//message
private T data;//返回数据
/**
- @return the status
*/
public int getStatus() {
return status;
}
/**
- @param status the status to set
*/
public void setStatus(int status) {
this.status = status;
}
/**
- @return the message
*/
public String getMessage() {
return message;
}
/**
- @param message the message to set
*/
public void setMessage(String message) {
this.message = message;
}
/**
- @return the data
*/
public T getData() {
return data;
}
/**
- @param data the data to set
*/
public void setData(T data) {
this.data = data;
}
public boolean isOK() {
return status >= 2000 && status < 3000;
}
}
注:,即泛型(Generic Types),JDK1.5新特性,使用时可以理解为创建一个用类型作为参数的类或方法。 也可以这样理解,就是说,若一个类或方法里面要用到另外一个类,但我又不确定所需要用到的那个类的具体类型,所以就用到了 Generic Types,这里简单说明,就不过多解释了,朋友若不明白可以去查阅相关资料。
定义了一个model类,我们还再去定义一个解析器接口,即 IParser ,该接口也使用泛型:
package org.gaochun.parser;
/**
-
@author gao_chun
*/
public interface IParser {
public T parse(String data);
}
那么下面我们再来看这个 AbstractParser 类,这个类是我们定义的一个抽象解析类,且实现了解析器接口,需要注意的是 我们定义的解析器 IParser 使用了泛型,model类 Result 也是如此,再次来看具体的 AbstractParser :
import org.gaochun.model.Result;
import org.gaochun.utils.JsonUtils;
import org.json.JSONArray;
import org.json.JSONObject;
/**
-
抽象解析类
-
目的:解析服务器端外层数据,并供具体解析类继承重写解析方法
-
@author gao_chun
*/
public abstract class AbstractParser implements IParser<Result> {
@Override
public final Result parse(String response) {
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
最后
考虑到文章的篇幅问题,我把这些问题和答案以及我多年面试所遇到的问题和一些面试资料做成了PDF文档,如果有需要的朋友可以私信我【面试】免费领取
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
[外链图片转存中…(img-nuoEuFmC-1710889846286)]
最后
考虑到文章的篇幅问题,我把这些问题和答案以及我多年面试所遇到的问题和一些面试资料做成了PDF文档,如果有需要的朋友可以私信我【面试】免费领取
[外链图片转存中…(img-cOujn10S-1710889846286)]
[外链图片转存中…(img-7erB0gFx-1710889846287)]
喜欢的朋友可以关注、转发、点赞 感谢!