700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > rxbus 源码_Rxbus事件交互

rxbus 源码_Rxbus事件交互

时间:2022-02-07 10:40:26

相关推荐

rxbus 源码_Rxbus事件交互

更多内容,关注代码GG微信公众号 :代码GG之家

Rxbus事件交互

源码地址:

demo地址

目标:

使得处理传递数据,不需要接口,直接使用注释关联起来。

使用方法:

第一步

在你的项目gradle文件里面,引入compile 'com.hwangjr.rxbus:rxbus:1.0.3' 导入这个包

有时会出现和其他包冲突,使用:compile ('com.hwangjr.rxbus:rxbus:1.0.3') {

exclude group: 'com.hwangjr.utils', module: 'timber'

}

排除掉里面的冲突包,具体这个语法,可以搜索 gradle 教程。

第二步

写入一个实例,用来构造Rxbus实例,这个是单例模式存在,一般这个实现是放在app创建里面,然后通过接口获取,全局可以使用。

单例代码:public final class RxBus {

private static Bus sBus;

public synchronized static Bus get() {

if (sBus == null) {

sBus = new Bus();

}

return sBus;

}

}

然后我们如下使用:public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

setSupportActionBar(toolbar);

// 注册时会自动从当前类里面拿取注释为@Produce 和 @Subscribe,解析处理,会发送出来消息

//创建的地方注册进来,需要销毁的时候撤销,否则内存泄漏,所以你可以自己封装下baseActivity,完成注册和销毁动作。

RxBus.get().register(this);

//也可以自己使用

RxBus.get().post("hello");

}

@Override

protected void onDestroy() {

super.onDestroy();

//销毁

RxBus.get().unregister(this);

}

static class BusAction

{

public static final String EAT_MORE="eat_more";

public static final String EAT_TEST="eat_test";

}

//接收一个消息,消息区别是通过参数,因此这里接收一个post事件,参数为字串时,这里就可以收到。

@Subscribe

public void eat(String food) {

Toast.makeText(this,food,Toast.LENGTH_SHORT).show();

}

//接收一个列表参数,并且限制这个接收线程是IO,标记为BusAction.EAT_MORE ,标记需要和发送者一致,线程不要需要

@Subscribe(

thread = EventThread.MAIN_THREAD,

tags = {

@Tag(BusAction.EAT_TEST)

}

)

public void eatMore(ArrayList foods) {

// purpose

Toast.makeText(this,"eatMore",Toast.LENGTH_SHORT).show();

}

// @Produce

// public String produceFood() {

// return "This is bread!";

// }

@Produce(

thread = EventThread.IO,

tags = {

@Tag(BusAction.EAT_TEST)

}

)

public ArrayList produceMoreFood() {

ArrayList list =new ArrayList<>();

list.add("This");

list.add("is");

list.add("breads!");

return list;

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。