您的位置:首页 > 移动开发 > Android开发

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

2016-05-21 13:28 579 查看


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代码:

public class MainActivity extends Activity {


Button btnJump;//跳转到Bactivity

TextView tvContent;//等待Bactivity修改的textview

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

EventBus.getDefault().register(this);

btnJump = (Button) findViewById(R.id.btnJump);

btnJump.setText("go to Bactivity");

tvContent = (TextView) findViewById(R.id.tvContent);

btnJump.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) {

Intent intent = new Intent();

intent.setClass(MainActivity.this, SecondActivity.class);

startActivity(intent);

}

});

}

//响应的方法

@Subscriber(tag="tag")

public void get(String string){

tvContent.setText(string);

}

//响应的方法

@Subscriber(tag="tag")

public void get1(String string){

Toast.makeText(this, string, Toast.LENGTH_SHORT).show();

}

@Override

protected void onDestroy() {

EventBus.getDefault().unregister(this);

super.onDestroy();

}

}


2.Bactivity的代码:

public class SecondActivity extends Activity {

Button btnJump;

TextView tvContent;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

EventBus.getDefault().register(this);

setContentView(R.layout.activity_main);

btnJump = (Button) findViewById(R.id.btnJump);

btnJump.setText("change Aactivity text");

tvContent = (TextView) findViewById(R.id.tvContent);

btnJump.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) {

//发送事件

EventBus.getDefault().post("Toast show", "tag");

}

});

}

}


3.实际效果:




3后记

第一次写解析开源框架的代码确实或有稍许紧张,为了使用
markdown
写博客,所以把两个都不熟悉的东西都做第一次的尝试,希望后续越来越好。关于AndroidEventBus的所有应用层面的代码,已经全部给出,所以它真的很简单很方便。本文只是对AndroidEventBus做了介绍,想要了解开源框架,看源码是必不可少的,后续将继续对它做更深入的了解,紧张期待中!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android