greenrobot EventBus 使用实践
来源:互联网 发布:php 获取根目录 编辑:程序博客网 时间:2024/06/02 01:28
第一步:在build.gradle加入
compile 'org.greenrobot:eventbus:3.0.0'
然后重新编译工程:注意如果正式使用时,提示找不到EventBus则使用以下处理办法:
没有效果,添加依赖失败,没有一点反应,后来看stackoverflow 说,在allprojects的repositories下面加入 “mavenCentral()”
先开始也是没有效果,后来,重启了Android,然后就可以了,之前好多遍rebuild都不管用
第二步:定义消息类
public class MessageEvent { public int pos; public String cityId; public MessageEvent(int pos , String cityId) { this.pos = pos;//用于标记是发给哪个接收者的,如果同一个消息有多个接收者 this.cityId = cityId; }}
第三步:编写发送消息的代码
比如点击按键,然后发送消息,或者,其他库的回调函数发送此消息,上面的类的定义可以和发消息的类定义到同一个文件里面
EventBus.getDefault().post(new MessageEvent(1,“id”);第四步:编写接收者部分(接收者和发送者都可以是任意线程,任意activity,fragment
// 当MessageEvent被当做参数发送的时候这个方法将会被触发.@Subscribe(threadMode = ThreadMode.MAIN) //表示消息接收函数运行在ui线程,即可以直接操作界面显示public void onMessageEvent(MainActivity.MessageEvent event) { //Toast.makeText(getActivity(), "from fragment: "+event.pos, Toast.LENGTH_SHORT).show(); if (indexOfFragment == event.pos) { // the current page is been selected//当有多个接收者用编号区分是否发给自己的消息 System.out.println("the current page is been selected page is "+ event.pos); //only do this on current page //todo send update ui msg }}第五步:注册接受者
在这之上知识准备好接收者,但是还没有注册到eventbus,因此还不会收到消息
在接收函数所在的类里面,注册接收者,比如在Fragmet或activity里面
@Overridepublic void onPause() { super.onPause(); EventBus.getDefault().unregister(this); System.out.println("fragment ::::: un register"+this);}@Overridepublic void onResume() { super.onResume(); EventBus.getDefault().register(this); System.out.println("fragment ::::: register address:" + this);}这里注意不要在onStart和onStop里面做,具体原因没有分析,但是使用onStart和onStop在使用时会出现,接收到消息,ui不更新的现象(接收者在fragment里面)
阅读全文
0 0
- greenrobot EventBus 使用实践
- greenrobot EventBus开源库-使用
- Android greenrobot的EventBus
- Android greenrobot:EventBus详解
- greenrobot-EventBus初探
- GreenRobot EventBus, ClassNotFoundException still there after using Subscriber Index 使用Eventbus 异常
- androidEventBus 与 greenrobot的EventBus
- greenrobot的EventBus 源码解析
- java.lang.NoClassDefFoundError: de.greenrobot.event.EventBus
- <Android>greenrobot-EventBus,guava-Event Bus的异步实现
- de.greenrobot:eventbus:3.0.0-beta1混淆的坑
- 关于报错:Failed to resolve: 'de.greenrobot:eventbus:2.4.0' 'de.greenrobot:greendao:2.1.0'等问题的解决办法
- 【Android开发】greenrobot三大开源利器详解(一)——EventBus
- org.greenrobot.eventbus.EventBusException: Subscriber class already registered to event class
- androidstudio报错之Java.lang.NoClassDefFoundError: de.greenrobot.event.EventBus
- Otto EventBus实践
- 第一个EventBus实践
- 【Android】EventBus实践
- Android实现饿了么搜索框效果(兼容低版本)ValueAnimator
- OpenStack权威技术认证COA简介及全球实考统计数据
- string、wstring、cstring、 char、 tchar、int转换方法
- mybatis中对数据库中字段值唯一处理
- 树莓派使用 USB 摄像头做网络监控
- greenrobot EventBus 使用实践
- 浪迹天涯的声明提升
- Powershell监控操作系统用户账号事件并预警
- 40个Java多线程问题总结
- iOS获取设备唯一标识
- 经典算法--字符串倒置
- Android 向右滑动销毁(finish)Activity, 随着手势的滑动而滑动的效果
- Ubuntu usefull tools
- 部分翻转链表Reverse Linked List II