Android Otto调研
这两天对Otto进行了一个简单的调研,发现官网特别简单差点儿没东西,github上给的sample也不是非常好。网上的技术博客也差点儿千篇一律,我就把自己的心得体会写下来吧,如有缘者看见望其少走弯路。
大家都知道这是一个公布者/订阅者模式,也都知道@Produce使用来注冊一个须要公布的方法,可是我在实际应用中却从来没用到过@Produce,仅仅须要定义一个事件,在须要公布的是好post一下这个事件,然后在须要接收这个消息的Activity或Fragment中@Subscribe一下即可了。详细就三步。
第一步,构造一个event事件。须要传递的參数放在构造方法中。比如:
public class TextChangeEvent {
public final String s;
public TextChangeEvent(String s) {
this.s = s;
}
@Override
public String toString() {
return this.s;
}
}
第二步,在须要公布消息的地方用post公布,post的參数是一个event的实例。new一个出来就OK了:
findViewById(R.id.btn1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
BusProvider.getInstance().post(new TextChangeEvent("注冊呢"));
AnotherActivity.this.finish();
}
});
第三步,在须要接收消息的界面用@Subscribe接收一下就能够了:
@Subscribe
public void onTextChanged(TextChangeEvent event) {
text.setText(event.toString());
Log.v("cat", event.toString());
}
到这里就完毕了一个从消息公布。在总线中传递,再到须要接收的地方被接收处理的过程,当中有几点须要注意的:
1 、Otto推荐使用单例模式。即仅仅有一个Bus实例,那么我们就构造一个BusProvider:
import com.squareup.otto.Bus;
public class BusProvider {
private static final Bus BUS = new Bus();
public static Bus getInstance() {
return BUS;
}
private BusProvider() {
}
}
2 、Otto的github上给的样例是在一个Activity的onResume()方法中对Bus注冊自己,在onPause()方法中取消注冊,我认为在实际应用中。一个界面假设不再前台那么它假设也须要接收消息那么就将取消注冊的方法放在onDestroy()中,这样能防止在界面进入Pause状态时取消注冊:
@Override
protected void onDestroy() {
super.onDestroy();
BusProvider.getInstance().unregister(this);
}
恩,Otto很easy好用的总线模式。用注解的方法就能够完毕消息的公布和接收,尽管性能要比EventBus差一点,可是假设胜在代码简洁、逻辑清晰,那么损失一点性能也是能接受的,毕竟那一点性能对如今的CPU根本不算什么。
Android Otto调研的更多相关文章
- 想做一个整合开源安全代码扫描工具的代码安全分析平台 - Android方向调研
想做一个整合开源安全代码扫描工具的代码安全分析平台 - Android方向调研 http://blog.csdn.net/testing_is_believing/article/details/22 ...
- Android Otto框架浅析
今天要介绍的是一个Android中使用得比較多的android 事件总线 EventBus模式的一个框架Otto. Otto 官网:http://square.github.io/otto/ 一.An ...
- Mono for Android开发调研笔记
安装完Mono for Android(简称:MonoDroid)之后,可以用MonoDevelop或Visual Studio来开发Mono for Android应用程序:目前只能在模拟器上调试和 ...
- 微信稳居Android App排行榜4月份国内榜首
根据某机构通过对Android样本访问行为的持续监测数据进行样本属性加权并根据iOS/Android用户调研数据建模推总得出中国移动互联网用户规模以及相应的用户结构数据显示,2015年4月份国内And ...
- 【Xamarin挖墙脚系列:Mono项目的图标为啥叫Mono】
因为发起人大Boss :Miguel de lcaza 是西班牙人,喜欢猴子.................就跟Hadoop的创始人的闺女喜欢大象一样...................... 历 ...
- 冰多多团队-第二次scrum例会
冰多多团队-第二次Scrum会议 会议基本情况 会议时间:4月8日 19:00 - 19:30 会议地点:新主楼F座2楼沙发休息处 工作情况 团队成员 已完成任务 待完成任务 zpj Service实 ...
- 请各位帮帮忙:Android LBS应用——CityExplorer (v1.0) 调研
Hello哇各位亲!! 请各位帮帮忙:Android LBS应用——CityExplorer(V1.0)调研 嗯,这个事情是这样的,要填一个调查问卷,但是问卷中部分问题是关于这个叫做CityExplo ...
- Android学习系列(43)--使用事件总线框架EventBus和Otto
事件总线框架 针对事件提供统一订阅,发布以达到组件间通信的解决方案. 原理 观察者模式. EventBus和Otto 先看EventBus的官方定义: Android optimized event ...
- 作业一_随笔3_调研Android的开发环境的发展演变
调研某一移动应用/平台的开发环境的发展演变:Android 其实,一开始,我只知道,苹果手机用IOS系统,其他很多手机时候安卓系统.我百度知道Android开发主要是android studio和Ec ...
随机推荐
- poj1028--动态规划--Ignatius and the Princess III
Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ...
- Python中的traceback模块
traceback模块被用来跟踪异常返回信息. 如下例所示: 1.直接打印异常信息 import traceback try: raise SyntaxError, "traceback t ...
- 谈谈cookie的弊端
一.cookie虽然在数据在客户端持久存储提供了方便,但是分担了服务器数据传输的负担,还是存在很大的局限性的. 局限性: (1)在特定的域名下最多存储20个cookie. 浏览器版本 ...
- JWT和Spring Security集成
通常情况下,把API直接暴露出去是风险很大的, 我们一般需要对API划分出一定的权限级别,然后做一个用户的鉴权,依据鉴权结果给予用户对应的API (一)JWT是什么,为什么要使用它? 互联网服务离不开 ...
- jah老师中关于集合的总结
--------概述:1.Java 集合就像一种容器,可以把多个对象的引用放入容器中 2.Java 集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的关联数组3.Java 集合可分为 S ...
- 阿里云 linux centos 常用解压命令
格式: tar 选项 文件目录列表 功能: 对文件目录进行打包备份 选项: -c 建立新的归档文件 -r 向归档文件末尾追加文件 -x 从归档文件中解出文件 -O 将文件解开到 ...
- P3399 丝绸之路
题目背景 张骞于公元前138年曾历尽艰险出使过西域.加强了汉朝与西域各国的友好往来.从那以后,一队队骆驼商队在这漫长的商贸大道上行进,他们越过崇山峻岭,将中国的先进技术带向中亚.西亚和欧洲,将那里的香 ...
- sql server restore DB issue
error occurs when restoring the backup file of sql server(DB.bak) to run the above t-sql will shoot ...
- mysql 主从错误情况与原因
mysql 主从错误情况1,master 上删除一条记录是从库报错 找不到该记录引起原因:master出现宕机或者从库已经删除.解决方案:stop slave;set global sql_slave ...
- root密码忘记怎么办?
忘记root密码:按 e进入内核在按e,后面加1 .按b启动 进入命令行输入passwd,设置新的密码后exit退出即可