EventBus3.0使用
来源:互联网 发布:阿里云服务器增加磁盘 编辑:程序博客网 时间:2024/05/19 05:40
使用EventBus降低耦合性
1、添加依赖
compile 'org.greenrobot:eventbus:3.0.0'2、在MainActivity中发送消息,我是在onStop()方法中发送的消息,这个可以根据自己的需要灵活使用
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.btn_send_message).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(MainActivity.this,SecondActivity.class)); } }); } @Override protected void onStop() { super.onStop(); MessageBean bean=new MessageBean(); bean.setMessage("你好"); EventBus.getDefault().post(bean); }}
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="net.edaibu.eventbusdemo.MainActivity"> <Button android:id="@+id/btn_send_message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:text="发消息"/></RelativeLayout>
3、消息实体类
public class MessageBean { private String mMessage; private String message; public MessageBean(){} public MessageBean(String message){ this.mMessage=message; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; }}
4、接收消息的Activity 在onCreate()中注册EventBus,在onDestory()中取消注册
public class SecondActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); //注册EventBus EventBus.getDefault().register(this); } //在ui线程执行 @Subscribe(threadMode = ThreadMode.MAIN) public void receiveMainMessage(MessageBean event) { Log.e("tag", "event---->" +event+"_____mainMessage="+ event.getMessage()); Toast.makeText(this,event.getMessage(),Toast.LENGTH_SHORT).show(); } //在background线程执行 @Subscribe(threadMode = ThreadMode.BACKGROUND) public void receiveMessageBackground(MessageBean event) { Log.e("tag", "event---->" +event+"_____backgroundMessage="+ event.getMessage()); } //在async线程执行 @Subscribe(threadMode = ThreadMode.ASYNC) public void receiveMessageAsync(MessageBean event) { Log.e("tag", "event---->" +event+"_____asyncMessage="+ event.getMessage()); } //在posting线程执行 @Subscribe(threadMode = ThreadMode.POSTING) public void receiveMessagePosting(MessageBean event) { Log.e("tag", "event---->" +event+"_____postingMessage="+ event.getMessage()); } @Override protected void onDestroy() { super.onDestroy(); //取消注册EventBus EventBus.getDefault().unregister(this); }}
5、Demo中分别在EventBus的四个接收方法中打印了log,依次执行的顺序如下
ThreadMode.MAIN-->ThreadMode.POSTING-->ThreadMode.ASYNC->ThreadMode.BACKGROUND
’
6、当然也可以通过设置优先级来改变接收顺序 ,如下对ThreadMode.POSTING设置priority=100,优先级最高,则ThreadMode.POSTING先接收到数据
//在posting线程执行 @Subscribe(threadMode = ThreadMode.POSTING,priority = 100) public void receiveMessagePosting(MessageBean event) { Log.e("tag", "event---->" +event+"_____postingMessage="+ event.getMessage()); }
阅读全文
0 0
- EventBus3.0使用总结
- EventBus3.0使用总结
- EventBus3.0使用详解
- EventBus3.0使用
- EventBus3.0的使用
- EventBus3.0使用
- EventBus3.0使用详解
- EventBus3.0使用详解
- EventBus3.0使用
- EventBus3.0使用详解
- EventBus3.0使用介绍
- EventBus3.0的使用
- EventBus3.0的使用
- EventBus3.0的使用
- EventBus3.0的使用
- EventBus3.0的使用
- EventBus3.0使用详解
- EventBus3.0使用详解
- 老司机带你学系列-Hibernate入门到精通-1
- 记录下关于安卓项目集成微信支付的过程
- JavaWeb学习总结——文件的上传和下载
- echarts常用设置
- eclipse中创建带有父子结构的项目
- EventBus3.0使用
- BigInteger类
- vue 1.x 组件数据传递
- java笔试中字符串翻转的几种方法
- App Store支持微信支付,去年接入支付宝
- neural networks deep learning Deep Neural Network Application Homework
- Error occurred during initialization of VM java/lang/NoClassDefFoundError: java/lang/Object
- 第二个Java程序,用“*”直接输出三角形。
- SQL Navigator 6.7 (bulldba.com)