首页 > 代码库 > Android 解耦利器 EventBus
Android 解耦利器 EventBus
Andorid 开发过程中总会遇到各个模块耦合问题,使用EventBus是一种解耦方式。
EventBus 源代码下载地址 https://github.com/greenrobot/EventBus
如果一个ListView展示的内容需要到网络上请求该数据,那么该业务需要如下几个步骤:
1.发送请求拼装URL--->
2.发送请求-->
3.得到数据--->
4.渲染数据
//使用传统的Handler和线程 final Integer GET_DATA= http://www.mamicode.com/1001;""; //result = http.get("http://test.com/list"); Message message = handler.obtainMessage(); message.getData().putString("result",result); message.what = GET_DATA; handler.handleMessage(message); } }.start();//使用EventBus class ResponseEvent{ String result; ResponseEvent(String result){ this.result = result; } } class ResponseErrorEvent{ } class RequestEvent{ StringBuffer url=new StringBuffer("http://test.com"); RequestEvent(String url){ this.url.append(url); } } class HttpManager{ //子线程运行 public void onEventBackgroundThread(RequestEvent request){ try{ String result =""; //开始发送HTTP请求来说去数据 //result = http.get(request.url); //将获取到的数据发送出去,监听了改Event的地方都可以获取到数据 EventBus.getDefault().post(new ResponseEvent(result)); }catch (Throwable throwable){ LogUtil.e(throwable); EventBus.getDefault().post(new ResponseErrorEvent()); } } } //注册需要事件监听器 EventBus.getDefault().register(new HttpManager()); //注册需要事件监听器 EventBus.getDefault().register(this); EventBus.getDefault().post(new RequestEvent("/list")); //主线程中运行 public void onEventMainThread(ResponseEvent responseEvent) { //渲染数据 //responseEvent.result; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。