EventBus简单的实现
2024-10-16 15:47:32
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();
}
}
最新文章
- 深入springMVC------文件上传源码解析(上篇)
- Yocto开发笔记之《错误记录》(QQ交流群:519230208)
- Attributes:文本属性 和NSAttributedString
- ODI 12c 安装
- HDU-4679 Terrorist’s destroy 树形DP,维护
- centos 下 yum 安装 nginx 平滑切换安装到 Tengine
- delphi 基础书籍推荐
- C语言之冒泡排序
- ios开发证书,描述文件,bundle ID的关系
- [编织消息框架][设计协议]opCode
- Unity游戏程序员面试题及解答
- 摘抄自知乎的redis相关
- call和apply和bind区别
- 【转载】XSS学习笔记
- PCIe设备的配置空间
- ES5中文分词(IK)
- struts2学习笔记(一)
- Java入门知识1
- FFmpeg(9)-解码器解码代码演示(FFmpeg调用MediaCodec实现硬解码、多线程解码、及音视频解码性能测试)
- python基础学习笔记(一)
热门文章
- [Spring框架]Spring AOP基础入门总结一.
- atitit 短信验证码的源码实现  .docx
- Nginx反向代理搭建配置
- salesforce 零基础学习(二十三)数据记录导出至excel(自定义报表导出)
- javascript中function 函数递归的陷阱问题
- Netgen mesh library : nglib
- (4) PIVOT 和 UPIVOT 的使用
- 使用ExifInterface设置Datetime发生的问题
- iis https 客户端证书
- JavaScript的学习--JavaScript设计模式的总结