public class MainActivity extends AppCompatActivity { private TextView text_view; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text_view = findViewById(R.id.text_view); } } 创建一个bean类 作为发送的数据 EventBus.getDefault().post(new ToastEvent("这是发送过来的数据")); //注册 EventBus.getDefault().register(this); /** * 具体注册了对什么事件的订阅,这个需要onEvent()方法来说明 * @param toastEvent * * ThreadMode.MAIN不管消息在哪里发送 都在主线程接收这个事件 * ThreadMode.BACKGROUND * Async处理事件会开启一个新的线程 这种模式可以耗时操作 */ @Subscribe(threadMode = ThreadMode.MAIN,priority = 1000) public void onToastEvent(ToastEvent toastEvent) {//参数就是订阅的事件(其实就是传递数据的类) //Toast.makeText(this,toastEvent.getContent(),Toast.LENGTH_SHORT).show(); //取消事件的传送 EventBus.getDefault().cancelEventDelivery(toastEvent); button.setText(toastEvent.getContent()); } /** * 粘性事件 */ public class ThirdActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_third); } public void post(View view) { //发送的是粘性事件 EventBus.getDefault().postSticky(new ToastEvent("粘性事件的发送")); } public void dingyue(View view) { EventBus.getDefault().register(this); } @Subscribe(threadMode = ThreadMode.MAIN,sticky = true) public void onToastEvent(ToastEvent toastEvent) { Toast.makeText(this,toastEvent.getContent(),Toast.LENGTH_SHORT).show(); } public void yiChu(View view) { //移除 EventBus.getDefault().removeStickyEvent(ToastEvent.class); EventBus.getDefault().removeAllStickyEvents(); } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); } public class MainActivity extends AppCompatActivity { private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = findViewById(R.id.button); //注册事件 EventBus.getDefault().register(this); getSupportFragmentManager().beginTransaction().replace(R.id.frame_content,new DingYueFragment()).commit(); } /** * 具体注册了对什么事件的订阅,这个需要onEvent()方法来说明 * @param toastEvent * * ThreadMode.MAIN不管消息在哪里发送 都在主线程接收这个事件 * ThreadMode.BACKGROUND * Async处理事件会开启一个新的线程 这种模式可以耗时操作 */ @Subscribe(threadMode = ThreadMode.MAIN,priority = 1000) public void onToastEvent(ToastEvent toastEvent) {//参数就是订阅的事件(其实就是传递数据的类) //Toast.makeText(this,toastEvent.getContent(),Toast.LENGTH_SHORT).show(); //取消事件的传送 EventBus.getDefault().cancelEventDelivery(toastEvent); button.setText(toastEvent.getContent()); } //接触事件的订阅 @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); } public void tiaoZhuan(View view) { Intent intent = new Intent(this,SecondActivity.class); startActivity(intent); } }
EventBus简单使用
最新推荐文章于 2022-11-24 17:23:49 发布