Android 开发EventBus简单使用
来源:互联网 发布:在家英文网络客服 编辑:程序博客网 时间:2024/06/13 09:23
从最简单的开始
EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。
1、下载EventBus的类库
源码:https://github.com/greenrobot/EventBus
可以直接添加依赖:
compile 'org.greenrobot:eventbus:3.0.0'
- 基本使用步骤
1.写一个事件类,用来消息传递等
public class DemoEvent { private String mMsg; public DemoEvent(String msg) { mMsg = msg; } public String getMsg(){ return mMsg; }}
2.为订阅者注册EventBus
EventBus.getDefault().register(this);
3.订阅者取消注册
EventBus.getDefault().unregister(this);//取消注册EventBus
4.发布者发布消息
EventBus.getDefault().post( new DemoEvent("DemoEvent btn clicked"));
5.订阅者重写方法进行消息回调
@Subscribe public void onEventMainThread(DemoEvent event) { String msg = "onEventMainThread收到了消息:" + event.getMsg(); bt.setText(msg); Toast.makeText(this, msg, Toast.LENGTH_LONG).show(); }
通过这五个步骤,就实现了消息的传递,大家并没有看到handle等。
先看一下一个简单的Demo效果图
在MainActivity点击按钮进入SecondActivity界面,点击发送消息按钮,在主界面中接收到消息并吐司,改变文本内容,这边布局就不贴了。
- 第一步,一个事件类
public class DemoEvent { private String mMsg; public DemoEvent(String msg) { mMsg = msg; } public String getMsg(){ return mMsg; }}
- 第二步,在订阅者注册EventBus
这里的订阅者就是MainActivity
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //注册EventBus EventBus.getDefault().register(this); bt = (Button) findViewById(R.id.bt); tv = (TextView) findViewById(R.id.tv); bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //点击跳转 Intent intent=new Intent(MainActivity.this,SecondActivity.class); startActivity(intent); } }); }
- 第三步,取消注册
在MainActivity的onDestroy取消注册
@Override protected void onDestroy(){ super.onDestroy(); EventBus.getDefault().unregister(this);//取消注册EventBus }
- 第四步,SecondActivity界面发送消息
public class SecondActivity extends AppCompatActivity { private Button bu; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); bu = (Button) findViewById(R.id.button); bu.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //发送消息,参数为自己定义的事件类 EventBus.getDefault().post( new DemoEvent("DemoEvent btn clicked")); } }); }}
- 第五步,订阅者接收事件消息
@Subscribe public void onEventMainThread(DemoEvent event) { String msg = "onEventMainThread收到了消息:" + event.getMsg(); tv.setText(msg); bt.setText(msg); Toast.makeText(this, msg, Toast.LENGTH_LONG).show(); }
这里只使用了onEventMainThread这个方法,当然还有其它的方法,以后慢慢介绍。@Subscribe,这个注解必须加上,不然会报错。在这个方法中,我们将接收到自己发过来的事件对象,然后对消息进行处理。
到这里MainActivity中的代码全部完成了。
public class MainActivity extends Activity { private Button bt; private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //注册EventBus EventBus.getDefault().register(this); bt = (Button) findViewById(R.id.bt); tv = (TextView) findViewById(R.id.tv); bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //点击跳转 Intent intent=new Intent(MainActivity.this,SecondActivity.class); startActivity(intent); } }); }//接收消息的方法,注释必须添加 @Subscribe public void onEventMainThread(DemoEvent event) { String msg = "onEventMainThread收到了消息:" + event.getMsg(); tv.setText(msg); bt.setText(msg); Toast.makeText(this, msg, Toast.LENGTH_LONG).show(); } @Override protected void onDestroy(){ super.onDestroy(); EventBus.getDefault().unregister(this);//取消注册EventBus }}
阅读全文
1 0
- Android 开发EventBus简单使用
- Android开发EventBus最简单的使用
- Android EventBus简单使用
- EventBus 《二》 Android EventBus的简单使用
- Android开发线程间的交互之EventBus简单使用
- Android EventBus的简单使用
- android EventBus 3.0 简单使用
- Android EventBus的简单使用
- android EventBus的简单使用
- Android EventBus 的简单使用
- Android Eventbus 3简单使用
- EventBus在Android中的简单使用
- Android框架之EventBus的简单使用
- Android之EventBus的简单使用
- EventBus的简单使用
- eventbus简单使用
- EventBus的简单使用
- Eventbus简单使用
- sdut-离散题目11
- python多线程模块thread
- Python之subprocess模块的使用
- Struts(二)
- IoT通讯技术选型及模型设计的思考
- Android 开发EventBus简单使用
- SpringMVC学习-01天
- Maven知识点扫盲(二)依赖管理
- git初识
- 数据库建立存储过程的意义
- sdut-离散题目12
- 通信同步对发送接收处理
- 重载和重写的区别
- 希尔排序的实现