EventBus3.0简单介绍(代码)

build.gradle中添加引用

compile 'org.greenrobot:eventbus:3.0.0'

基本代码

SecondActivity 执行事件发布
public class SecondActivity extends AppCompatActivity implements View.OnClickListener {
  private  Button btnMain;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        btnMain = (Button) findViewById(R.id.btnMain);
        btnMain.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btnMain:
                EventBus.getDefault().post(new MainMessage("传递信息:aikaifa"));//事件发布
                //此处可用EventBus.getDefault().post(String),方便在订阅处(@Subscriber)进行判断,可自定义static final String类型,自定义类似注册登录等的判断,方便做判断
                finish();
                break;
        }
    }
}
MainActivity执行事件订阅
public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button btnMain, btnBackground, btnAsync, btnPosting, btn1;
    private TextView tv_desc;

    private String TAG = MainActivity.class.getSimpleName();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
//必须进行EventBus注册
        EventBus.getDefault().register(this);
        initView();
        initClick();

    }

    /**
     * 按钮点击
     */
    private void initClick() {
        btnMain.setOnClickListener(this);
        btnBackground.setOnClickListener(this);
        btnAsync.setOnClickListener(this);
        btnPosting.setOnClickListener(this);
        btn1.setOnClickListener(this);
    }

    /**
     * 初始化View
     */
    private void initView() {

        btnMain = (Button) findViewById(R.id.btnMain);
        btnBackground = (Button) findViewById(R.id.btnBackground);
        btnAsync = (Button) findViewById(R.id.btnAsync);
        btnPosting = (Button) findViewById(R.id.btnPosting);

        btn1 = (Button) findViewById(R.id.btn1);
        tv_desc = (TextView) findViewById(R.id.tv_desc);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
//必须执行EventBus取消注册操作
        EventBus.getDefault().unregister(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btnMain:
                EventBus.getDefault().post(new MainMessage("MainMessage"));
                break;
            case R.id.btnBackground:
                EventBus.getDefault().post(new BackgroundMessage("BackgroundMessage"));
                break;
            case R.id.btnAsync:
                EventBus.getDefault().post(new AsyncMessage("AsyncMessage"));
                break;
            case R.id.btnPosting:
                EventBus.getDefault().post(new PostingMessage("PostingMessage"));
                break;
            case R.id.btn1:
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                startActivity(intent);
                break;

        }
    }

//以下必须在方法前进行注解@Subscribe
/**  @Subscribe
 *   public void onMainEventBus(String msg) {
 *      //可以通过msg进行判断
 *      if(msg.equals(**)){
 *       //进行判断,判断是登录还是注册还是其他自定义操作
 *      }
 *      
 *   }
 **/

    //主线程中执行
    @Subscribe(threadMode = ThreadMode.MAIN)
    public void onMainEventBus(MainMessage msg) {
        Log.e(TAG, msg.getMessage());
        tv_desc.setText(msg.getMessage());
    }

    //后台线程
    @Subscribe(threadMode = ThreadMode.BACKGROUND)
    public void onBackgroundEventBus(BackgroundMessage msg) {
        Log.e(TAG, msg.getMessage());
    }

    //异步线程
    @Subscribe(threadMode = ThreadMode.ASYNC)
    public void onAsyncEventBus(AsyncMessage msg) {
        Log.e(TAG, msg.getMessage());

    }

    //默认情况,和发送事件在同一个线程
    @Subscribe(threadMode = ThreadMode.POSTING)
    public void onPostEventBus(PostingMessage msg) {

        Log.e(TAG, msg.getMessage());
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,773评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,827评论 25 709
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,111评论 6 342
  • 柠檬汁和初恋S君在一起两年多,他不抽烟不喝酒,不撩妹,不沉迷电子游戏,学习成绩优异,除了看书和运动几乎没有什么...
    不误正业阅读 2,990评论 0 0
  • 不知道大家有没有观察过这样一种现象,就是不论是在买东西的时候排队还是检票上车的入口排队,队伍越排越长的越来越拥挤....
    午米阅读 3,379评论 4 10