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
- EventBus 《二》 Android EventBus的简单使用
- Android EventBus的简单使用
- Android EventBus的简单使用
- android EventBus的简单使用
- Android EventBus 的简单使用
- Android EventBus简单使用
- Android框架之EventBus的简单使用
- Android之EventBus的简单使用
- Android开发EventBus最简单的使用
- EventBus的简单使用
- EventBus的简单使用
- EventBus的简单使用
- EventBus的简单使用
- EventBus的简单使用
- EventBus的简单使用
- EventBus的简单使用
- EventBus的简单使用
- EventBus的简单使用
- leetcode-268-Missing Number
- 463. Island Perimeter
- 《C Primer Plus》读书笔记——数组和指针(1)
- 二叉树的字符串创建和遍历,求深度,叶子节点数
- 深入理解 Linux 2.6 的 initramfs 機制 (上)
- android EventBus的简单使用
- POJ - 1094 Sorting It All Out解题报告
- AngularJS进阶(十九)在AngularJS应用中集成百度地图实现定位功能
- 嵌入式C++开发详解(一)
- jQuery-ajaxStart方法
- 正则表达式知识点整理
- IOCP模型与EPOLL模型的比较
- svn报错:Cannot negotiate authentication mechanism
- MongoDB学习(三)——mongofiles实现GridFS