Android Otto框架浅析
今天要介绍的是一个Android中使用得比較多的android 事件总线 EventBus模式的一个框架Otto。
Otto 官网:http://square.github.io/otto/
一、Android Studio中配置Otto (Eclipse中直接下载jar包导入)
跟之前介绍的其它的框架一样,它只须要简单地在build.gradle中配置以下一行红色字体就可以
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:19.+'
//otto 所须要依赖的包
compile 'com.squareup:otto:+'
}
二、Otto事件总线框架浅析
1、为什么要用Otto框架?
Otto框架的主要功能是帮助我们来减少多个类之间的耦合度的(解耦)。
譬如:一个类A和还有一个类B之间。假设A要操作B中的某个方法。
传统的方法:A直接调用B对象的该方法(耦合在一起)
事件总线机制:A不须要调用B类的方法,而只须要产生并发出 一个“事件通知”, 假设B订阅了该“事件”
那么它将会接受到这个事件,做出对应的操作。这样就被解耦了。
2. Otto框架使用(结合代码介绍)
Otto框架事实上相对之前的几个Android开源框架来说。更easy理解。
它主要运用到一个类: Bus类(用于注冊类,注销类。公布事件)
两个注解: @Subscribe (订阅) @Produce (生产) 【都是针对“事件”的注解】
为了方便,我这边没有使用两个类来做这个Demo。 只是假设大家要试的话也能够,只是记住一点,不管是
公布者类 还是 订阅者类, 都须要用Bus进行类的注冊,还有注销。
否则将没法被Bus识别,这样就无法生效了。
以下的Demo, 仅为了让大家知道“事件”被产生了之后。post出来,全部订阅了该事件的类都会接到该事件,接受的先后顺序,不由我们控制!
public class MyActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
findViewById(R.id.button_change).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
BusProvider.getBusInstance().post(new DataChangedEvent("this is changed String"));//公布事件
}
});
}
@Override
protected void onResume() {
super.onResume();
BusProvider.getBusInstance().register(this);//注冊
}
@Override
protected void onPause() {
super.onPause();
BusProvider.getBusInstance().unregister(this);//注销
}
@Subscribe //订阅事件DataChangedEvent
public void sayGoodOnEvent(DataChangedEvent event){
Log.e("event", "good");
}
@Subscribe //订阅事件
public void sayBadOnEvent(DataChangedEvent event){
Log.e("event", "bad");
}
@Produce //产生事件
public DataChangedEvent produceDataChangedEvent(){
return new DataChangedEvent("this is changed String");
}
}
Android Otto框架浅析的更多相关文章
- Android应用框架浅析
http://blog.csdn.net/yanbober/article/category/3206943 Android应用层View绘制流程与源码分析 http://blog.csdn.ne ...
- Android aidl Binder框架浅析
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38461079 ,本文出自[张鸿洋的博客] 1.概述 Binder能干什么?B ...
- Android自动化测试框架UIAutomator原理浅析
UIAutomator是一个Android自动化测试框架,是谷歌在Android4.1版本发布时推出的一款用Java编写的UI测试框架,它只能用于UI即黑盒方面的测试.所以UIAutomator只能运 ...
- Android源码浅析(三)——Android AOSP 5.1.1源码的同步sync和编译make,搭建Samba服务器进行更便捷的烧录刷机
Android源码浅析(三)--Android AOSP 5.1.1源码的同步sync和编译make,搭建Samba服务器进行更便捷的烧录刷机 最近比较忙,而且又要维护自己的博客,视频和公众号,也就没 ...
- Android百大框架排行榜
Android百大框架排行榜 15类Android通用流行框架 - 流风,飘然的风 - 博客园https://www.cnblogs.com/zdz8207/p/android-opensource- ...
- 2017年Android百大框架排行榜
框架:提供一定能力的小段程序 >随意转载,标注作者"金诚"即可 >本文已授权微信公众号:鸿洋(hongyangAndroid)原创首发. >本文已经开源到Gith ...
- android 优秀框架整理
程序员界有个神奇的网站,那就是github,这个网站集合了一大批优秀的开源框架,极大地节省了开发者开发的时间,在这里我进行了一下整理,这样可以使我们在使用到时快速的查找到,希望对大家有所帮助! 1. ...
- 2017年Android百大框架排行榜(转)
一.榜单介绍 排行榜包括四大类: 单一框架:仅提供路由.网络层.UI层.通信层或其他单一功能的框架 混合开发框架:提供开发hybrid app.h5与webview结合能力.web app能力的框架 ...
- Android 开源框架Universal-Image-Loader学习
Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用 Android 开源框架Universal-Image-Loader完全解析(二)--- 图片 ...
随机推荐
- Kubernetes dashboard集成heapster
图形化展示度量指标的实现需要集成k8s的另外一个Addons组件: Heapster . Heapster原生支持K8s(v1.0.6及以后版本)和 CoreOS ,并且支持多种存储后端,比如: In ...
- DELPHI MAKEWORD的用法
WORD MAKEWORD( BYTE bLow, // low-order byte of short value BYTE bHigh // high-order byte of ...
- 怎样在点击li时添加样式,移除兄弟样式
<style type="text/css"> .add{ color:#ff0} </style> <div> <ul> < ...
- scrapy-splash抓取动态数据例子十四
一.介绍 本例子用scrapy-splash爬取超级TV网站的资讯信息,输入给定关键字抓取微信资讯信息. 给定关键字:数字:融合:电视 抓取信息内如下: 1.资讯标题 2.资讯链接 3.资讯时间 4. ...
- 【android相关】【问题解决】R.java文件丢失
在进行android开发过程中,有时候,我们会遇到gen文件中R.java丢失的现象.重新build,或者clean工程,close并重新打开Project,但有时也没解决. 这可能是由于不小心把xm ...
- Selenium webdriver Java 开始
最早接触的selenium是 selenium IDE,当时是为了准备论文.为了用IDE还下载了Firefox浏览器.后来接触过两个项目都需要selenium,一个采用selenium webdirv ...
- 聚合数据全国天气预报API--ajax 通过城市名取数据
聚合数据天气预报API:https://www.juhe.cn/docs/api/id/39 接口地址:http://v.juhe.cn/weather/index 支持格式:json/xml 请求方 ...
- paypal - 支付所遇到的问题,编码等等
1.ipn支付方式编码问题,paypal默认编码为 gb2312,需要登录paypal后台,进入用户信息设置>销售工具>更多销售工具>paypal按钮编码设置>更多选项,全部修 ...
- PgSql备份pg_dump与还原手记pg_restore(转)可以直接跳转至最后面的示例进行查看
PgSql备份pg_dump与还原手记pg_restore(转) 可以直接跳转至最后面的示例进行查看 真没有想到,以前一直是PostgreSQL使用者,突然需要库移植又成了头一招了!原来它与mysql ...
- libevent2源码分析之三:信号的初始化流程
libevent2对信号的响应也进行了封装,使之与socket操作一样对外提供统一的接口.这里的信号一般指linux的信号.由于信号与socket相关的编程接口有较大的不同,因此在内部实现也有一些区别 ...