采用消息发布/订阅的一个很大的优点就是代码的简洁性,并且能够有效地降低消息发布者和订阅者之间的耦合度。
package com.nnddkj.myeventbus;import org.greenrobot.eventbus.EventBus;import org.greenrobot.eventbus.Subscribe;import org.greenrobot.eventbus.ThreadMode;import util.EventBusUtil;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;/** * EventBus使用 * 地址:https://github.com/greenrobot/EventBus * @author Administrator * */public class MainActivity extends Activity { PRivate Button btn_send; private TextView tv_message; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //注册 EventBus.getDefault().register(this); btn_send=(Button) findViewById(R.id.btn_send); tv_message=(TextView) findViewById(R.id.tv_message); btn_send.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //发送数据 String message="我要发送数据"; EventBusUtil event=new EventBusUtil(); event.setType("0"); event.setMessage(message); EventBus.getDefault().post(event); } }); } /** * 这里是写主线程接收消息,这里有4种方式,分别是:ASYNC BACKGROUND MAIN POSTING * @param event */ @Subscribe(threadMode = ThreadMode.MAIN) public void onUserEvent(EventBusUtil event) { //如果多个消息,可在实体类中添加type区分消息 tv_message.setText(event.getMessage()); } @Override protected void onDestroy() { // TODO Auto-generated method stub //取消注册 EventBus.getDefault().unregister(this); super.onDestroy(); }}package util;/** * 一个工具类,这里想传什么就写 什么了 * @author Administrator * */public class EventBusUtil { private String type; private String message; public String getType() { return type; } public void setType(String type) { this.type = type; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.nnddkj.myeventbus.MainActivity" > <Button android:id="@+id/btn_send" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="发送数据" /> <TextView android:id="@+id/tv_message" android:layout_width="fill_parent" android:layout_height="100dp" android:layout_below="@+id/btn_send"/></RelativeLayout>
新闻热点
疑难解答