EventBus的使用

观察者与被观察者的模式,类似于RXJava。首先,去GitHub上搜索,然后直接官方文档直接建议可以Gradle引入:在app.Gradle中加入   

//EventBus
    compile 'de.greenrobot:eventbus:2.4.0'

在SecondActivity中发送对象到MainActivity

这是MainActivity:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //注册EventBus
        EventBus.getDefault().register(MainActivity.this);


    }
  //跳转到第二个Activity
public void click(View v){ startActivity(new Intent(MainActivity.this,SecondActivity.class)); } @Override protected void onDestroy() { super.onDestroy(); //解除注册EventBus EventBus.getDefault().unregister(MainActivity.this); } //写这个方法用来接受对象,onEventMainThread表示不管信息从哪发过来,接受事件都在主线程 public void onEventMainThread(String s) { Log.d("msg","当前线程--->"+Thread.currentThread().getName()); Log.d("msg", "MainActivity收到消息-->" + s); } }

第二个Activity:

/**点击按钮发送事件
 * Created by xhj on 16-1-13.
 */
public class SecondActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Button btnSend= (Button) findViewById(R.id.btnSend);
        btnSend.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.d("msg", "SecondActivity当前线程--->"+Thread.currentThread().getName());
                EventBus.getDefault().post("hahahhahaa");//EventBus发送事件(对象)
            }
        });

    }
}

 EventBus不能注册多次,注册多次就会多次接收事件

这里有一片文章已经总结的很好了 ,http://blog.csdn.net/harvic880925/article/details/40660137

posted @ 2016-01-13 15:10  四念处  阅读(667)  评论(0编辑  收藏  举报