Android链式结构封装
来源:互联网 发布:局域网禁用软件 编辑:程序博客网 时间:2024/05/17 01:03
相关文章:《Okttp3.0简单的二次回调封装》
在java面向对象语言中,一贯喜欢采用函数式编程,把一个复杂的逻辑分解成几个函数来相互调用来达到自己的业务逻辑,一直用过okhttp的朋友能有不知道有没有对okhttp的链式结构感兴趣呢?今天没事,试着写了一下。
拿我们最熟悉的AsyncHttpClient这个网络请求框架做例子:
一、AsyncHttpClient的常规用法
AsyncHttpClient client = new AsyncHttpClient();RequestParams params = new RequestParams();params.put("loginPassword","18058810112");params.put("loginAccount","123456");client.post(url,params,new AsyncHttpResponseHandler(){@Overridepublic void onSuccess(int statusCode, org.apache.http.Header[] headers, byte[] responseBody) {super.onSuccess(statusCode, headers, responseBody);Toast.makeText(MainActivity.this,new String(responseBody),Toast.LENGTH_SHORT).show();}@Overridepublic void onFailure(int statusCode, org.apache.http.Header[] headers, byte[] responseBody, Throwable error) {super.onFailure(statusCode, headers, responseBody, error);Toast.makeText(MainActivity.this,"失败",Toast.LENGTH_SHORT).show();}});二、函数式封装
/** * AsyncHttp的Post请求 * * @param context * @param url * @param params * @param httpCallBack */public static void AsyncHttpPost(final Context context, String url, RequestParams params, final HttpCallBackInterface httpCallBack) {if (AppUtil.isNetworkConnected(context)) {SingletonsManager.getAsyncHttpInstance().post(context, url, params, new AsyncHttpResponseHandler() {@Overridepublic void onStart() {super.onStart();}@Overridepublic void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {httpCallBack.OnSuccess(new String(responseBody));}@Overridepublic void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {AppUtil.showToast(context, "网络链接失败!");}@Overridepublic void onFinish() {super.onFinish();}});} else {AppUtil.showToast(context, "当前无网络可用!");}}看一下链式结构封装
三、仿okhttp链式结构封装:
(1)创建请求成功的回掉接口(只实现请求成功的回调)
public interface AsyncHttpCallback { public void OnSucess(String result);}
(2)创建封装类
public class AsyncHttpManager { private String url; private static AsyncHttpManager mAsyncHttpManager; private static AsyncHttpClient mClient; private static RequestParams mParams; //私有的构造方法,防止随意创建实例 private AsyncHttpManager(){ } /** * newBuild创建实例 * * @return mAsyncHttpManager * 返回一定是AsyncHttpManager本身,这样才能继续调用别的方法,也就是所谓的链式结构 */ public static AsyncHttpManager newBuild(){ mAsyncHttpManager = new AsyncHttpManager(); mClient = new AsyncHttpClient(); mParams = new RequestParams(); return mAsyncHttpManager; } public AsyncHttpManager url(String url){ this.url = url; return this; } public AsyncHttpManager addParamter(String key,String value){ mParams.put(key,value); return this; } public void callBack(final AsyncHttpCallback asyncHttpCallback){ AsyncHttpClient client = new AsyncHttpClient(); client.post(url,mParams,new AsyncHttpResponseHandler(){ @Override public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { super.onSuccess(statusCode, headers, responseBody); //调用回调接口OnSucess自定义实现 asyncHttpCallback.OnSucess(new String(responseBody)); } @Override public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { super.onFailure(statusCode, headers, responseBody, error); } }); }}
(3)activity中的调用
AsyncHttpManager.newBuild().url(url).addParamter("loginPassword","18058810112").addParamter("loginAccount","123456").callBack(new AsyncHttpCallback() {@Overridepublic void OnSucess(String result) {Toast.makeText(MainActivity.this,result,Toast.LENGTH_SHORT).show();}});简单的思路,有什么需求直接添加方法就ok。
通过抓包可以看出,这就是我们所要实现的效果了
0 0
- Android链式结构封装
- 类似于jquery中的链式结构封装
- 学以致用--链式结构处理android耗时请求
- js链式动画封装
- dialogfragment链式调用封装
- 【链式栈】链式栈的封装<源代码>
- C++链式结构
- 线性表(链式结构)
- 栈 -- 链式存储结构
- 编程中的 链式 结构
- 指针和链式结构
- 指针和链式结构
- 简单链式结构删除
- 链式结构实现堆
- 链式储存结构-单链表
- 链式队列结构
- 二叉树链式结构
- 链式存储结构
- bootstrap-table 分页,超细致!新手写的个人的看法和理解。
- jenkins集成sonarqube代码质量跟踪分析
- bzoj 1179: [Apio2009]Atm (spfa+tarjan)
- 微信小程序开放公测 却不接受个人身份申请
- hdu5894 hannnnah_j’s Biological Test(2016 acm/icpc 沈阳网络赛,组合数学)
- Android链式结构封装
- 微信公众号用百度车联网API回复天气预报
- Java学习
- Yii2.0详细讲解
- Sqlserver查询数据库文件大小和剩余空间
- 数字化和社会化商业转型中首席信息官的作用
- ElasticSearch默认的分页参数 size
- ConcurrentHashMap的实现原理和源码分析
- git&github常用命令