MVP + okHttpUtils的简单实践
2017-08-24 11:14
127 查看
本文主要简述MVP和网络请求框架的实践。如果还不了解Okhttp,你可以去 http://www.jianshu.com/p/4c17956fe3b4 了解下,现在已经成为广大开发者的首选网络通讯库,相信你会喜欢的。
OkHttpUtils 目前支持
一般的 get,post,put,delete,head,options请求
基于Post的大文本数据上传
多文件和多参数统一的表单上传
支持一个key上传一个文件,也可以一个Key上传多个文件
大文件下载和下载进度回调
大文件上传和上传进度回调
支持cookie的内存存储和持久化存储,支持传递自定义cookie
支持304缓存协议,扩展四种本地缓存模式,并且支持缓存时间控制
支持301、302重定向
支持链式调用
支持可信证书和自签名证书的https的访问,支持双向认证
支持根据Tag取消请求
支持自定义泛型Callback,自动根据泛型返回对象
MVP模式的介绍在android中模型(Model):业务逻辑处理,负责处理数据的加载或者存储,比如从网络或本地数据库获取数据等;视图(View):负责界面数据的展示,与用户进行交互,就是Activity;主导器(Presenter):相当于协调者,是模型与视图之间的桥梁,将模型与视图分离开来。通过Presenter进行它们之间的交互,隔离了M、V之间的直接交互。首先是方法模型层public class OkHttpModel { private static OkHttpModel instance = new OkHttpModel(); public static OkHttpModel getInstance() { return instance; }
//post请求获取数据 public void postMap(Map<String, String> map, final ResultCallBack callback) { OkHttpUtils.post().url(UrlConfig.TEST_URL).params(map).build().execute(new StringCallback() { @Override public void onError(Call call, Exception e, int i) { callback.result(e.toString()); } @Override public void onResponse(String s, int i) { callback.result(s); } }); }
}
Resutl数据接口
public interface ResultCallBack {void result(String s);}视图进行数据传输的接口
public interface MainView {void postStringView(String s);}主导器Presenter
public class MainPresenter {private OkHttpModel model = OkHttpModel.getInstance();private MainView mainView;private Context mContext;public MainPresenter(Context context, MainView mainView) {this.mContext = context;this.mainView = mainView;}public void postMap(String url, Map<String, String> map) {model.postMap(map, new ResultCallBack() {@Overridepublic void result(String s) {System.out.println(s);mainView.postStringView(s);}});}}Activity的Demo
这里使用了ButterKnife,有兴趣的可以去有百度下
public class TestActivity extends Activity implements MainView{@BindView(R.id.btnTest)Button btnTest;@BindView(R.id.image_test)ImageView imageTest;private MainPresenter mPresenter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ButterKnife.bind(this);}@OnClick({R.id.btnTest, R.id.image_test})public void onClick(View view) {switch (view.getId()) {case R.id.btnTest:getString();break;case R.id.image_test:break;}}private void getString() {Map<String, String> map = new HashMap<>();map.put("key1", "value1");mPresenter = new MainPresenter(this,this);mPresenter.postMap(UrlConfig.TEST_URL,map);}@Overridepublic void postStringView(String s) {T.showShort(s);
//Toast成功弹出}
}至此简述完成
相关文章推荐
- rxjava+retrofit+okhttp+mvp 简单实践
- OkHttpUtils一个专注于让网络请求更简单的框架
- Okhttp3网络请求框架+MVP设计模式简单实战
- OkHttpUtils-2.0.0 升级后改名 OkGo,全新完美支持RxJava,比Retrofit更简单易用
- MVP简单实现OKHttp+recyclerview+springview
- Retrofit+RxJava+Okhttp+RecycleView+MVP简单的展示数据
- Android——网络框架篇:OkHttpUtils一个专注于让网络请求更简单的框架
- MVP-简单的OkHttp网络请求数据
- 简单MVP-Retrofit-Rxjava-OKhttp
- 超简单的okHttpUtils封装(下)
- 简单使用OkHttp和MVP登录和注册
- OkhttpUtils一个专注于让网络请求更简单的框架
- Android框架之MVP实践简单万花筒
- OkHttpUtils一个专注于让网络请求更简单的框架
- Android网络请求发展简史和RxJava+Retrofit+OkHttp实践
- MariaDB简单CURD实践
- OKHttp的简单使用
- python爬虫的最佳实践(五)--selenium+PhantomJS的简单使用
- jni 简单实践 eclipse支持c++11
- 使用简单工厂模式和反射机制优化MVP数据绑定流程