EventBus在各模块中基本使用

EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。

这部分使用起来相对简单

1、eventbus.jar第三方架包

这个包不大,23K下面是连接地址

http://download.csdn.net/download/androidstarjack/8958389

2、注册(接收)

这里需要说明,需要接收数据的地方才注册,否则不需要

即谁接收谁注册原则

EventBus.getDefault().register(this);

//这个是接收发送的数据

//我们暂且使用onEventMainThread接口来接收

   public void onEventMainThread(Object obj) {
        Log.v("result", "ThirdActivity: " + obj.toString());
   }

3、发送

    EventBus.getDefault().post(object)

post里面是一个object超类,可以是自己定义的一个对象

4、注销

不用的时候别忘了注销掉(否则仍会接收,这一点和广播类似)

    @Override
    protected void onDestroy(){
        super.onDestroy();
        EventBus.getDefault().unregister(this);
    }

onEventXXXX  onEvent函数一共有四种,前面的例子只用到一个onEvent。

函数名                         含义

ThreadMode onEvent                         事件处理在事件发送的那个线程执行

PostThread onEventMainThread               事件在主线程-UI线程执行

MainThread onEventBackgroundThread         事件在一个后台线程执行(就一个后台线程) BackgroundThread onEventAsync              事件会单独启动一个线程执行(每个事件都会启动一个线程) Async 其中前三个事件处理方式,都应该尽快完成。

时间: 2024-10-05 12:14:27

EventBus在各模块中基本使用的相关文章

urllib模块中的方法

urllib模块中的方法 1.urllib.urlopen(url[,data[,proxies]]) 打开一个url的方法,返回一个文件对象,然后可以进行类似文件对象的操作.本例试着打开google >>> import urllib >>> f = urllib.urlopen('http://www.google.com.hk/') >>> firstLine = f.readline()   #读取html页面的第一行 >>>

Python 3.X 调用多线程C模块,并在C模块中回调python函数的示例

由于最近在做一个C++面向Python的API封装项目,因此需要用到C扩展Python的相关知识.在此进行简要的总结. 此篇示例分为三部分.第一部分展示了如何用C在Windows中进行多线程编程:第二部分将第一部分的示例进行扩展,展示了如何在python中调用多线程的C模块:第三部分扩展了第二部分,增加了在C模块的线程中回调python的演示. 本文所用的环境为:64位Win7 + python 3.4 x86 + vs2010 一.windows下的C语言多线程程序 windows下多线程编程

Python学习心得(三)函数之任意数量实参、任意数量关键字实参、导入模块中的函数

#!/usr/bin/python # -*- coding:utf-8 -*- ''' 1.传递任意数量的实参 Python允许函数传入任意数量的实参,例如: *messages形参名中的*表示让Python创建一个空的名称为messages的元组,接收传入的所有值 ''' def get_person_message(*messages): concat = '' for message in messages: concat += ' ' + message print "\nShow P

Python 学习之路 - 模块概念,模块中的特殊变量,os、sys模块

模块概念 1 #注意:自定义的模块名不与标准模块名相同,若相同只会导入自定义模块 2 #单模块并在同一目录下: 3 #直接用 import 模块名,调用时用 模块名.方法名() 4 #嵌套在其他文件夹下: 5 #from xxx import xxx as 别名 6 import example 7 import lib.commons 8 from lib import commons as lib_commons 9 from src import commons as src_common

Stitching模块中focalsFromHomography初步研究

在Stitching模块中,通过"光束法平差"的时候,有一个步骤为"通过单应矩阵估算摄像头焦距",调用的地方为: void focalsFromHomography(const Mat& H, double &f0, double &f1, bool &f0_ok, bool &f1_ok){    CV_Assert(H.type() == CV_64F && H.size() == Size(3, 3));

requirejs 定义模块中含有prototype

因为我对requirejs不熟悉,不清楚如何定义带有prototype的模块, 在看了:https://gist.github.com/jonnyreeves/2474026 的demo之后,就明白了,呦西. person.js的注释中提到requireJS simply requires us to return  a single value (function / Object) which represents this definition. In our case, we will

EBS采购模块中的快速接收和快速接收事务

(版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) 快速功能是一个快速输入收货和接收事务的方法. 在收货窗口上,如果你在查找期望收货窗口上指定了或者隐式指定了来源类型(你如果你输入了,比如,采购订单编号,就隐式指定了来源类型),那么就可以使用快速功能.在接收事务窗口,不论查找接收事务窗口上的搜索条件,快速功能都是可用的.在行上的任意手工操作都会禁用快速按钮,且直到你再次点击查找按钮才会启用快速按钮. 当你在收货窗口中选择快速按钮时,采购模块会

有关文件夹与文件的查找,删除等功能 在 os 模块中实现

最近在写的程序频繁地与文件操作打交道,这块比较弱,还好在百度上找到一篇不错的文章,这是原文传送门,我对原文稍做了些改动. 有关文件夹与文件的查找,删除等功能 在 os 模块中实现.使用时需先导入这个模块, 导入的方法是: import os 一.取得当前目录 s = os.getcwd() # s 中保存的是当前目录(即文件夹) 比如运行abc.py,那么输入该命令就会返回abc所在的文件夹位置. 举个简单例子,我们将abc.py放入A文件夹.并且希望不管将A文件夹放在硬盘的哪个位置,都可以在A

【智能家居篇】wifi驱动的理解(3)——usb接口在wifi模块中的角色

转载请注明出处:http://blog.csdn.net/Righthek 谢谢! 上一篇文章已经提到USB接口在wifi模块中的最重要两个函数是usb_read_port()和usb_write_port().那它们是怎么和wifi扯上关系的呢?我们可以从以下三个方面去分析: 1.首先需要明确wifi模块是USB设备,主控(CPU)端是USB主机: 2.USB主机若需要对wifi模块进行数据的读写时,就必须经过USB接口: 3.既然涉及到数据的读写操作,必然要用相应的读写函数,那么usb_re