MVP + okHttpUtils的简单实践
来源:互联网 发布:windows有多少行代码 编辑:程序博客网 时间:2024/06/05 16:05
本文主要简述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之间的直接交互。
模型(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() { @Override public 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; @Override protected 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); } @Override public void postStringView(String s) { T.showShort(s);
//Toast成功弹出 }
}
至此简述完成
阅读全文
0 0
- MVP + okHttpUtils的简单实践
- OkHttpUtils让网络请求简单的框架
- 超简单的okHttpUtils封装(下)
- okhttpUtils的简单使用以及封装
- MVP的实践
- 简单okHttpUtils封装
- 基于OkHttpUtils网络请求的二次封装(简单版)
- Android MVP模式简单理解与实践
- rxjava+retrofit+okhttp+mvp 简单实践
- Android框架之MVP实践简单万花筒
- MVP的简单理解
- MVP的简单理解
- MVP的简单实例
- MVP 简单的例子
- MVP的简单使用
- MVP的简单介绍
- MVP的简单登录
- MVP的简单登录
- ScrollView嵌套Viewpager嵌套瀑布流Recyclerview
- Arrays.asList()方法
- 闵可夫斯基距离(MinkowskiDistance)
- VS code 中的各种变量 ${file},${fileBasename}
- XML解析精讲
- MVP + okHttpUtils的简单实践
- netty之ChannelOption
- 未分类
- Django学习(7):templates过滤器及Admin增强
- MSHR(miss status handling register)
- java练习——客户信息(方法简单理解)
- 最受程序员欢迎的公司榜单发布:2015 IT人才招聘趋势分析
- [日推荐]『数字营销观察』阅读5分钟,充实2小时
- 剑指offer——数组中只出现一次的数