EventBus简单的实现
EventBus是最近项目用到的,也只是会些简单的功能,不过感觉功能蛮强大的。代码链接:http://download.csdn.net/detail/qq_29774291/9629346
EventBus是Guava的事件处理机制,是设计模式中的观察者模式(生产/消费者编程模型)的优雅实现。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。
一.下载的类库:https://github.com/greenrobot/EventBus
二.基本的使用:
1.在要接收消息的页面注册:
EventBus.getDefault().register(this);
2.在发送界面发送消息:
Student student = new Student(20, "张三", "男");
EventBus.getDefault().post(student);
3.在接受界面接受信息:
@Subscribe
public void onMessageReviced(final Student Message) {
//显示一个弹窗
System.out.println("收到消息dddx :" + Message);
if(Message != null){
showAlertDialog(this, "姓名:" + Message.getName() + "\\年龄:" + Message.getAge() + "\\性别:" +Message
.getSex());
}
}
4.解除注册:
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
EventBus.getDefault().unregister(this);
}
主程序代码
package com.item.jiejie.event; import de.greenrobot.event.EventBus;
import de.greenrobot.event.Subscribe;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
import android.widget.TextView; public class MainActivity extends Activity { private TextView tv_View;
private Button btn_to_finish; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setView();
EventBus.getDefault().register(this);
} @Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
EventBus.getDefault().unregister(this);
}
private void setView() {
// TODO Auto-generated method stub
tv_View = (TextView) findViewById(R.id.tv_text);
btn_to_finish = (Button) findViewById(R.id.btn_to_one);
btn_to_finish.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
startActivity(new Intent(MainActivity.this, OneActivity.class));
}
});
}
private boolean isShow = false;
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
isShow = true;
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
isShow =false;
}
@Subscribe
public void onMessageReviced(final String Message) {
tv_View.setText(Message);
System.out.println("收到消息ddd :" + Message);
} @Subscribe
public void onMessageReviced(final Student Message) {
//显示一个弹窗
System.out.println("收到消息dddx :" + Message);
if(Message != null){
showAlertDialog(this, "姓名:" + Message.getName() + "\\年龄:" + Message.getAge() + "\\性别:" +Message
.getSex());
}
}
private void showAlertDialog(final Context context,String string){
AlertDialog.Builder dialog = new AlertDialog.Builder(context);
dialog.setTitle("我是标题");
dialog.setMessage(string);
dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub }
});
AlertDialog mDialog = dialog.create();
mDialog.show();
}
}
EventBus简单的实现的更多相关文章
- EventBus简单封装
前言 以前每个页面与每个页面业务逻辑传递让你不知所措,一个又一个接口回调,让你晕头转向,一个又一个参数让你混乱不堪.EventBus一个耦合度低的让你害怕的框架. 什么是EventBus EventB ...
- EventBus 简单原理(一)
EventBus 1.根据文章最前面所讲的EventBus使用步骤,首先我们需要定义一个消息事件类: public class MessageEvent { private String messag ...
- Android设计模式—— 观察者模式(以及EventBus的简单使用)
1.概述 观察者模式最常用的地方是GUI系统.订阅-发布系统.观察者模式的一个重要作用就是解耦,将观察者和被观察者解耦,使得他们之间的依赖性更小. 2.定义 定义对象间的一种一对多依赖关系,使得每当一 ...
- 观察者模式与Guava EventBus
观察者模式 结构图 代码实现 public abstract class Subject { private List<Observer> observerList = new Array ...
- EventBus使用的简介
写在前面 曾经我们做组件间的消息分发更新,通常会採用观察者模式.或者接口数据回调的相关方式,可是这种做法尽管能够解决我们的问题.可是组件之间的耦合相当严重,并且代码也不易阅读和维护,为了解决这种问题, ...
- 【Android】AndroidStudio关于EventBus报错解决方法its super classes have no public methods with the @Subscribe
作者:程序员小冰,GitHub主页:https://github.com/QQ986945193 新浪微博:http://weibo.com/mcxiaobing 首先说明,以前我用eventBus的 ...
- Java 框架、库和软件的精选列表(awesome java)
原创翻译,原始链接 本文为awesome系列中的awesome java Awesome Java Java 框架.库和软件的精选列表 项目 Bean映射 简化 bean 映射的框架 dOOv - 为 ...
- 【热门技术】EventBus 3.0,让事件订阅更简单,从此告别组件消息传递烦恼~
一.写在前面 还在为时间接收而烦恼吗?还在为各种组件间的消息传递烦恼吗?EventBus 3.0,专注于android的发布.订阅事件总线,让各组件间的消息传递更简单!完美替代Intent,Handl ...
- EventBus的简单使用与原理
一.概述 EventBus是一款针对Android优化的发布/订阅事件总线.主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间 ...
随机推荐
- mvc项目controller重命名了,用原网页url访问不了了,怎么办?
如题.MVC项目,手机网站. 公司的官方微信上,用户关注之后,点击相应菜单就可以使用相关的功能. 最近项目重构,有些不规范的命名方式给予了重构.上线后,微信上发现一些网页访问不了了. 联系微信的维护人 ...
- PMO到底什么样?(2)
接上一篇,继续聊一聊PMO到底什么样. 交付功能,8大典型责任 1监控.评定和报告 项目办理单位从交付的视点必定要有监控评定.每个项目在要害的期间上它的进展是不是跟按期的相同:是不是有要害的专家在要害 ...
- lua实现深度拷贝table表
lua当变量作为函数的参数进行传递时,类似的也是boolean,string,number类型的变量进行值传递.而table,function,userdata类型的变量进行引用传递.故而当table ...
- asp.net 文件 操作方法
/// <summary> /// 移动文件 /// </summary> /// <param name="oldPath">源文件路径< ...
- PHP_01之PHP概述、数据、语法
1.定义:PHP Hypertext Preprocessor,超文本预处理器,服务器端脚本语言:2.环境:WAMP:Window+Apache+PHP+MySQL: LAMP:Linux+Apach ...
- jQuery_04之第三方、自定义
1.第三方插件: ①日期:layDate:不依赖于jquery 使用:html:<input class="laydate-icon"> css:引入laydat ...
- jquerymobile仿微信 - 01
jquerymobile仿微信 - 01 jquerymobile的组件感觉不咋地哇 本地调试最好是开一个web server,不然数据访问会有问题 <div data-role="p ...
- Jetty集群配置Session存储到MySQL、MongoDB
在Web开发中,Session表示HTTP服务器与客户端(例如浏览器)的“会话”,每个客户端会有其对应的Session保存在服务器端,通常用来保存和客户端关联的一些信息,例如是否登录.购物车等. Se ...
- 默認打開pr_debug和dev_dbg
作者:彭東林 郵箱:pengdonglin137@163.com 日期:2016-08-26 18:04:14 在進行Linux驅動開發時經常見到使用pr_debug和dev_dbg打印驅動的log, ...
- 炫!一组单元素实现的 CSS 加载进度提示效果
之前的文章个大家分享过各种类型的加载效果(Loading Effects),这里再给大家奉献一组基于单个元素实现的 CSS 加载动画集合.这些加载效果都是基于一个 DIV 元素实现的,十分强悍. 温馨 ...