android EventBus的简单使用

来源:互联网 发布:网络消费者服务热线 编辑:程序博客网 时间:2024/06/05 03:10
EventBus是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间、组件与后台线程间的通信。比如请求网络,等网络返回时通过Handler或Broadcast通知UI,接口回调数据,这些需求都可以通过EventBus实现。

采用消息发布/订阅的一个很大的优点就是代码的简洁性,并且能够有效地降低消息发布者和订阅者之间的耦合度。

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;@Overrideprotected 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() {@Overridepublic 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());    }@Overrideprotected 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>





0 0