首页 > 系统 > Android > 正文

android EventBus的简单使用

2019-11-09 18:22:42
字体:
来源:转载
供稿:网友
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;	@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>


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表