NoHttp详解之NoHttp最基本使用(无封装)
这里是一个最基本的使用,在项目中也可以直接这样使用,如果想学习更多请移步NoHttp主页:
https://github.com/yanzhenjie/NoHttp
特别注意:这里的RequestQueue是请求队列,默认3个并发请求,也就是有3个子线程在跑,所以正式项目中不要每发起一个请求就new一个队列,建议在BaseActivity#onCreate(Bundle)
中new一个队列即可,这个activity
的所有请求包括依赖此activity
的fragment
都是用这个队列即可,在BaseActivity#onDestory()
时stop
这个队列即可,当然特殊情况下可以再new一个Queue出来,也无伤大雅的。
建议读者阅读完下方的代码后再把上面这句话读一遍,会理解的更深刻。
BaseActivity,提供基础的封装
public class BaseActivtiy extends Activity implements View.OnClickListener {
/**
* 请求队列
*/
private RequestQueue mRequestQueue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 创建请求队列, 默认并发3个请求, 传入数字改变并发数量: NoHttp.newRequestQueue(5);
mRequestQueue = NoHttp.newRequestQueue();
}
@Override
protected void onDestroy() {
super.onDestroy();
mRequestQueue.cancelAll(); // 退出页面时时取消所有请求。
mRequestQueue.stop(); // 退出时销毁队列,回收资源。
}
/**
* 发起一个请求。
*
* @param what what.
* @param request 请求对象。
* @param listener 结果监听。
* @param <T> 要请求到的数据类型。
*/
public <T> void request(int what, Request<T> request, OnResponseListener<T> listener) {
mRequestQueue.add(what, request, listener);
}
}
在BaseActivity的子类中使用
public class MainActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
}
/**
* 请求用户信息。
*/
private void requestUserInfo() {
Request<String> req = NoHttp.createStringRequest(url);
request(0, req, new OnResponseListener<String>() {
@Override
public void onStart(int what) {
// 请求开始,可以显示一个dialog。
}
@Override
public void onSucceed(int what, Response<String> response) {
// 请求成功,这里判断服务器的响应码,假如你们服务器200时,才是业务成功:
Headers headers = response.getHeaders();
if(headers.getResponseCode() == 200) {
String result = response.get(); // 拿到结果。
}
}
@Override
public void onFailed(int what, Response<String> response) {
// 请求失败,具体失败类型,请看nohttp主页的demo。
}
@Override
public void onFinish(int what) {
// 请求结束,关闭dialog。
}
});
}
}
在BaseActivity的子类的Fragment中使用
public class MainFragment extends Fragment {
/**
* 请求用户信息。
*/
private void requestUserInfo() {
Request<String> req = NoHttp.createStringRequest(url);
((MainActivity)getActivity()).request(0, req, new OnResponseListener<String>() {
@Override
public void onStart(int what) {
// 请求开始,可以显示一个dialog。
}
@Override
public void onSucceed(int what, Response<String> response) {
// 请求成功,这里判断服务器的响应码,假如你们服务器200时,才是业务成功:
Headers headers = response.getHeaders();
if(headers.getResponseCode() == 200) {
String result = response.get(); // 拿到结果。
}
}
@Override
public void onFailed(int what, Response<String> response) {
// 请求失败,具体失败类型,请看nohttp主页的demo。
}
@Override
public void onFinish(int what) {
// 请求结束,关闭dialog。
}
});
}
}
如果想学习更多的使用方法,建议参考Demo:https://github.com/yanzhenjie/NoHttp
更多使用介绍请阅读NoHttp文档:doc.nohttp.net
NoHttp详解之NoHttp最基本使用(无封装)的更多相关文章
- $_FILES参数详解及简单<form>表单无刷新上传文件
$_FILES:经由 HTTP POST 文件上传而提交至脚本的变量,类似于旧数组$HTTP_POST_FILES 数组(依然有效,但反对使用)详细信息可参阅 POST方法上传 $_FILES数组内容 ...
- springdata+redis配置详解
springdata设计初衷是位简化数据类型和数据的持久化存储,它并不局限是关系型数据库还是nosql数据库,都提供了简化的数据库连接,让数据获取变得更加的简单.所有这些的实现有统一的api提供. 本 ...
- HttpSession详解
HttpSession详解 session的机制 http是无状态的协议,客户每次读取web页面时,服务器都打开新的会话,而且服务器也不会自动维护客户的上下文信息,那么要怎么才能实现会话跟踪呢?s ...
- Linq之旅:Linq入门详解(Linq to Objects)
示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...
- 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...
- EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解
前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...
- Java 字符串格式化详解
Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...
- Android Notification 详解(一)——基本操作
Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...
- Android Notification 详解——基本操作
Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...
随机推荐
- ocrosoft Contest1316 - 信奥编程之路~~~~~第三关 问题 L: 大整数减法
http://acm.ocrosoft.com/problem.php?cid=1316&pid=11 题目描述 求两个大的正整数相减的差. 输入 共2行,第1行是被减数a,第2行是减数b ...
- theMatrix代码雨效果
做了一个代码雨效果放在个人主页: https://lanleilin.github.io/lanGallery/index.html 代码: <!DOCTYPE html> <ht ...
- Topcoder SRM 603 div1题解
昨天刚打了一场codeforces...困死了...不过赶在睡前终于做完了- 话说这好像是我第一次做250-500-1000的标配耶--- Easy(250pts): 题目大意:有一棵树,一共n个节点 ...
- bootstrap3基本了解
使用 BootCDN 提供的免费 CDN 加速服务(同时支持 http 和 https 协议) Bootstrap 中文网 为 Bootstrap 专门构建了免费的 CDN 加速服务,访问速度更快.加 ...
- 我们曾经心碎的C#之 第三章.如何使用C#属性
第三章 . 如何使用C#属性 1.Private访问修饰符 访问修饰符可以用来修饰类成员字段和方法,每个访问修饰符只能为紧随其后的成员指定特定的访问权限 如果将字段或方法声明为public 就表示 ...
- matlab默认字体设置
Monospaced Plain 10 SansSerif Plain 10 这是默认设置.希望能帮到你!
- IOS-NSDate之今天,昨天,这周,这个月,上个月
http://blog.csdn.net/xdrt81y/article/details/8425727 今天跟大家讨论日期的用法,相信大家在项目中,经常会设置一个默认时间段,比如一周前到今天.下面教 ...
- UVA 10746 Crime Wave - The Sequel
最小费用最大流 源点->警察->bank->汇点 剩下的模板就可以 #include <map> #include <set> #include <li ...
- UVA 10910 Marks Distribution
题意 把数字T分成N个数的和,保证这N个数中最小的数大于P.求方案数目 另f[i][j]表示把i分成j个数的和的方案数 f[i][j]=f[i][j-1]+f[i-1][j-1]+f[i-2][j-1 ...
- Spring整合Disruptor3
一.什么是Disruptor 从功能上来看,Disruptor 是实现了“队列”的功能,而且是一个有界队列.那么它的应用场景自然就是“生产者-消费者”模型的应用场合了. 可以拿 JDK 的 Block ...