RxBus 用法学习总结
来源:互联网 发布:淘宝宝贝综合排名 编辑:程序博客网 时间:2024/06/06 09:54
compile ('com.hwangjr.rxbus:rxbus:1.0.5') { exclude group: 'com.jakewharton.timber', module: 'timber' }
使用方式有两种,直接使用com.hwangjr.rxbus.RxBus或者使用单例模式得到一个对象
public static final class RxBus{
private static Bus mBus;
public static synchronized Bus getInstance(){
if(mBus == null){
mBus = new Bus();
}
return mBus;
}
}
文档上推荐使用第二种方式。
我遇到的第一个问题是RxBus是不是可以像BroadCast一样,可以跨页面,在哪都能收到广播,然后测试了下,只有当在当前界面和接收消息的页面都 RxBus.get().register(this),才能收到消息。
我遇到的第二个问题是RxBus.get().post()和@Produce的用法和区别。
第一眼看文档确实没怎么看懂,
@Subscribe public void eat(String food) { // purpose } @Subscribe( thread = EventThread.IO, tags = { @Tag(BusAction.EAT_MORE) } ) public void eatMore(List<String> foods) { // purpose } @Produce public String produceFood() { return "This is bread!"; } @Produce( thread = EventThread.IO, tags = { @Tag(BusAction.EAT_MORE) } ) public List<String> produceMoreFood() { return Arrays.asList("This is breads!"); }
普通的不带类型的传值,两种方式1 直接使用RxBus.get().post("hahaha"),2使用@Produce
@Produce
public String test(){
return "hehehehe";
}
这时在
@Subcribe
public void test(String str){
Log.d("test",str);
}中就能收到消息了,上面两种方式的效果是一样的。
带类型的传值消息,也有两种方式,1 直接使用RxBus.get().post("type","hahahaha"),2使用@Produce
@Produce(
thread = EventThread.IO,
tags = {
@Tag("type")
}
)
然后在
@Subscribe(
thread = EventThread.IO//线程类型要和produce时的线程类型保持一致。如果使用第一种方式,在点击事件的时候,这里要使用EventThread.MAINTHREAD
tags = {
@Tag("type")
}
)
public void test(String str){
Log.d("test",str)
}这里就能收到消息了。使用大概就是这样了,接下来会分析一下源码。
- RxBus 用法学习总结
- Android studio 事件总线RxBus学习总结
- RxBus使用总结
- RxBus使用总结
- RxBus 简单使用学习
- GitHub上AndroidKnife/RxBus用法
- RxBus
- RxBus
- RXBUS
- RxBus
- RxBus
- RxBus
- RxBus
- RxBus
- RxBus
- Git用法学习总结
- 清纯不做作的RxBus,用法与EventBus 一致
- RxBus学习之旅--从入门到提高
- Codeforces 501D Misha and Permutations Summation
- 3D bin picking
- oracle行转列函数
- 数据结构实验3-带头结点的单链表
- zx--LTE
- RxBus 用法学习总结
- 安卓xmpp简单介绍(登录)以及自签名证书的使用
- 数据结构实验4-栈与字符串
- awk命令详解
- FreeMarker 数字输出中的逗号问题
- Java学习日记(一)环境配置及项目结构讲解
- 网络服务器 用到的技术
- scala中为什么不建议用return
- FreeMarker的if标签