AndroidEventBus使用----基本操作(1)

1.概述

Aactivity和Bactivity,从Aactivity跳转到Bactivity,如果在Bactivity中要更新Aactivity怎么办?我想最简单的方法就是startActivityForResult。如果Aactivity中的该方法如果处理的业务过于复杂,那代码的可读性会变得特别差。 
自从看了 Mr Simple 的AndroidEventBus以后,我觉得事件处理,变得那么的简单和简洁,让review代码变得轻松自如。

2.实战

AndroidEventBus是基于 EventBus 进行重构的事件总线框架,它主要解决Activity、Fragmen、Service等之间的交互,力争低耦合的高质量的代码。 
AndroidEventBus的原理类似java中的观察者模式,只要订阅了事件的对象,在修改或者发送事件的时候,所有订阅对象都将受到通知。AndroidEventBus的使用,也极其简单,主要三步走:

  • EventBus.getDefault().register(this),注册需要订阅事件的对象。当然如果要取消订阅对象需要unregister。
  • 添加需要被通知的方法,使用Subscriber注解进行标注。
  • EventBus.getDefault().post(Object),发送事件通知订阅者。

1.Aactivity代码:

 
  
  1. public class MainActivity extends Activity {
  2. Button btnJump;//跳转到Bactivity
  3. TextView tvContent;//等待Bactivity修改的textview
  4. @Override
  5. protected void onCreate(Bundle savedInstanceState) {
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.activity_main);
  8. EventBus.getDefault().register(this);
  9. btnJump = (Button) findViewById(R.id.btnJump);
  10. btnJump.setText("go to Bactivity");
  11. tvContent = (TextView) findViewById(R.id.tvContent);
  12. btnJump.setOnClickListener(new OnClickListener() {
  13. @Override
  14. public void onClick(View arg0) {
  15. Intent intent = new Intent();
  16. intent.setClass(MainActivity.this, SecondActivity.class);
  17. startActivity(intent);
  18. }
  19. });
  20. }
  21. //响应的方法
  22. @Subscriber(tag="tag")
  23. public void get(String string){
  24. tvContent.setText(string);
  25. }
  26. //响应的方法
  27. @Subscriber(tag="tag")
  28. public void get1(String string){
  29. Toast.makeText(this, string, Toast.LENGTH_SHORT).show();
  30. }
  31. @Override
  32. protected void onDestroy() {
  33. EventBus.getDefault().unregister(this);
  34. super.onDestroy();
  35. }
  36. }

2.Bactivity的代码:

 
  
  1. public class SecondActivity extends Activity {
  2. Button btnJump;
  3. TextView tvContent;
  4. @Override
  5. protected void onCreate(Bundle savedInstanceState) {
  6. super.onCreate(savedInstanceState);
  7. EventBus.getDefault().register(this);
  8. setContentView(R.layout.activity_main);
  9. btnJump = (Button) findViewById(R.id.btnJump);
  10. btnJump.setText("change Aactivity text");
  11. tvContent = (TextView) findViewById(R.id.tvContent);
  12. btnJump.setOnClickListener(new OnClickListener() {
  13. @Override
  14. public void onClick(View arg0) {
  15. //发送事件
  16. EventBus.getDefault().post("Toast show", "tag");
  17. }
  18. });
  19. }
  20. }

3.实际效果:

AndroidEventBus使用----基本操作(1)_第1张图片

3后记

第一次写解析开源框架的代码确实或有稍许紧张,为了使用markdown写博客,所以把两个都不熟悉的东西都做第一次的尝试,希望后续越来越好。关于AndroidEventBus的所有应用层面的代码,已经全部给出,所以它真的很简单很方便。本文只是对AndroidEventBus做了介绍,想要了解开源框架,看源码是必不可少的,后续将继续对它做更深入的了解,紧张期待中!

你可能感兴趣的:(android)