EventBus的简单使用

文章中引用了张鸿洋大神的博客,链接在此:http://blog.csdn.net/lmj623565791/article/details/40794879 和 http://blog.csdn.net/lmj623565791/article/details/40920453

此文章为本人学习记录所用,如有不对,欢迎指正!

进入正题

使用步骤:

  1.新建一个类

  2.在使用页面进行注册/反注册/传递数据

  3.在接收页面进行接收

具体代码:

  1.新建一个类

public class Event{    public static class ItemListEvent    {        private List<Item> items;

public ItemListEvent(List<Item> items)        {            this.items = items;        }

public List<Item> getItems()        {            return items;        }    }}  2.在使用页面进行注册/反注册/传递数据    a.注册语句,注册的作用是当页面创建时,先扫描整个页面,把所有onEvent的方法全部以键值对的方式存储起来,这样当执行传递数据语句时,根据传入的参数,直接从Map中找出对应的方法,利用反射进行调用      EventBus.getDefault().register(this);    b.反注册语句      EventBus.getDefault().unregister(this);    c.传递数据语句      EventBus.getDefault().post(new Event.ItemListEvent(Item.ITEMS));  3.在页面进行接收    此处需要明确一个问题,就是EventBus包含4个ThreadMode:onEventpostThread、onEventMainThread、onEventBackgroundThread、onEventAsync。其中:    onEventpostThread:表示当前方法会在当前发布事件的线程里执行    onEventMainThread:表示无论发布事件是在哪个线程,都会在主线程中执行    onEventBackgroundThread:表示如果发布事件的线程并非主线程,则直接在同一线程里执行,但是如果发布事件的线程是主线程,则直接加入后台任务池队列,只用线程池一个接着一个调用    onEventAsync:和onEventBackgroundThread相似,但不同的是没有onEventBackgroundThread中的一个接着一个调用,而是直接调用    接收时需要调用onEventpostThread、onEventMainThread、onEventBackgroundThread、onEventAsync方法中的一个。如:
public void onEventMainThread(Event.ItemListEvent event){    setListAdapter(new ArrayAdapter<Item>(getActivity(),            android.R.layout.simple_list_item_activated_1,            android.R.id.text1, event.getItems()));}
        
时间: 2024-11-01 05:46:24

EventBus的简单使用的相关文章

EventBus的简单使用与原理

一.概述 EventBus是一款针对Android优化的发布/订阅事件总线.主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅.以及将发送者和接收者解耦. 部分源码: //通过反射,获取到订阅者的所有方法 Method[] methods = clazz.getMethods(); for (Method method : methods) { String methodName = me

Android EventBus的简单使用基本的使用步骤就是如下4步,点击此链接查看例子及介绍。 定义事件类型: `public class MyEvent {}` 定义事件处理方法: `public

基本的使用步骤就是如下4步,点击此链接查看例子及介绍. 定义事件类型: `public class MyEvent {}` 定义事件处理方法: `public void onEventMainThread` 注册订阅者: `EventBus.getDefault().register(this)` 发送事件: `EventBus.getDefault().post(new MyEvent())` 一.实现 **EventBus**使用方法很简单,但用一个东西,如果不了解它的实现用起来心里总是没底

EventBus的简单介绍

Android EventBus EventBus.getDefault().register(this);//订阅事件 EventBus.getDefault().post(object);//发布事件 EventBus.getDefault().unregister(this);//取消订阅 EventBus包含4个ThreadMode:PostThread,MainThread,BackgroundThread,Async 1.  EventBus定义:是一个发布 / 订阅的事件总线. 2

Android 第三方类库简单使用之EventBus

Android 第三方类库之EventBus 1 PS 工欲善其事必先利其器. Eventbus也是一款在开发中常用的利器 这篇也对EventBus的简单介绍和使用,与之前个xutils介绍的级别一样.http://www.cnblogs.com/greentomlee/p/6025470.html 作者:修雨轩陈 @博客园 2 简介 开源项目地址: https://github.com/greenrobot/EventBus EventBus是一款针对Android优化的发布/订阅事件总线.主

Guava: 事件总线EventBus

EventBus 直译过来就是事件总线,它使用发布订阅模式支持组件之间的通信,不需要显式地注册回调,比观察者模式更灵活,可用于替换Java中传统的事件监听模式,EventBus的作用就是解耦,它不是通用的发布订阅系统,也不能用于进程间通信.可用于Android的EventBus库主要有这几个:Google出品的Guava,Guava是一个庞大的库,EventBus 只是它附带的一个小功能,因此实际项目中使用并不多.用的最多的是greenrobot/EventBus,这个库的优点是接口简洁,集成方

EventBus的使用和源码解析

一.基本介绍 EventBus 是一个 Android 事件发布/订阅框架,通过解耦发布者和订阅者简化 Android 事件传递,这里的事件可以理解为消息,本文中统一称为事件.事件传递既可用于 Android 四大组件间通讯,也可以用户异步线程和主线程间通讯等等.EventBus EventBus3.0版本有较大的更新,性能上有很大提升.这里主要介绍新版本. 传统的事件传递方式包括:Handler.BroadCastReceiver.Interface 回调,相比之下 EventBus 的优点是

EventBus的使用

EventBus使用 在介绍EventBus之前先捋顺以下Android自带的应用内通信方式有哪些? Android 应用内常用通信方式 1.使用handler进行线程间通信 handler是和Thread绑定的,主线程中创建Hander直接通过new Handler() 来创建即可.自定义线程中则还需要调用Looper.prepare Looper.loop来让Handler起作用,这里就不详细讲解原理及使用了,感兴趣的自己去探索一下. Handler主要有两个作用,一个是线程间传递消息, 另

Android -- 是时候来了解一波EventBus了

1,最早在项目中使用EventBus是在去年的时候,但自己一直没抽出时间来记录记录一下,今天就来简单的使用一下,先看一下EventBus的定义是什么 EventBus:是一个发布 / 订阅的事件总线. 再来看看它能干什么事 主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅.以及将发送者和接收者解耦. 我们来简单的实现一下其功能吧: EventBus的简单实用就是下面的四个方法 event

Android 中 EventBus 的使用(3):多线程事件处理

在这一系列教程的最后一篇中,我想谈谈GR的EventBus,在处理多线程异步任务时是多么简单而有效. AsyncTask, Loader和Executor…… 拜托! Android中有很多种执行异步操作的方法(指平行于UI线程的).AsyncTask对于用户来说是最简单的一种机制,并且只需要少量的设置代码即可.然而,它的使用是有局限的,正如Android官方文档中所描述的: AsyncTask被设计成为一个工具类,在它内部包含了Thread和Handler,但它本身并不是通用线程框架的一部分.