最近再看eventbus相关代码,首先从使用开始,后期再从源码角度分析eventbus.使用Demo后期公布到github上去。
使用的框架地址:https://github.com/bboyfeiyu/AndroidEventBus

Sticky 事件 使用例子:

1,首先每个Activity或者fragement都要进行eventBus的注册和反注册。
发送sticky事件的activity:
  1.  package com.example.mysimpleeventbus;
    import org.simple.eventbus.EventBus;
    import android.content.Intent;
    import android.os.Bundle;
    import android.support.v7.app.ActionBarActivity;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    public class MainActivity extends ActionBarActivity { private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    button = (Button)findViewById(R.id.button);
    // 1 首先注册事件总线
    EventBus.getDefault().register(this);
    button.setOnClickListener(new OnClickListener() { @Override
    public void onClick(View arg0) {
    // 2 发送Sticky事件
    EventBus.getDefault().postSticky(
    new User("soyoungboy", "西安财经学院")); // 跳转页面
    Intent intent = new Intent(MainActivity.this, OtherActivity.class);
    startActivity(intent);
    }
    });
    }
    @Override
    protected void onDestroy() {
    super.onDestroy();
    EventBus.getDefault().unregister(this);
    }
    }


 
接收事件的类:
注意这里的注册不是register就行了,而是:EventBus.getDefault().registerSticky(this);
 package com.example.mysimpleeventbus;
import org.simple.eventbus.EventBus;
import org.simple.eventbus.Subscriber;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;
public class OtherActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//注意此处的registerSticky而不是register
EventBus.getDefault().registerSticky(this);
}
//此处获取发送事件的内容
@Subscriber
void showToast(User user) {
Toast.makeText(OtherActivity.this, user.toString(), Toast.LENGTH_LONG).show();
}
@Override
protected void onDestroy() {
super.onDestroy();
//同样需要unregister
EventBus.getDefault().unregister(this);
}
}
然后配置文件:
  1.  <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.mysimpleeventbus"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="20" />
    <application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
    android:name=".MainActivity"
    android:label="@string/app_name" >
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>
    <activity android:name=".OtherActivity" >
    </activity>
    </application>
    </manifest>


如果MainActivity发送事件总线时,设置Tag的话,OtherActivity@Subscriber 注解没有添加tag的话,就不会获取到数据,除非设置tag
设置tag代码如下:
  1.   EventBus.getDefault().postSticky( new User("soyoungboy", "西安财经学院"),"soyoungboy");  
则对应的OtherActivity中接收的改为:
  1. //此处获取发送事件的内容
  2.  //此处获取发送事件的内容
    @Subscriber(tag = "soyoungboy")
    void showToast(User user) {
    Toast.makeText(OtherActivity.this, user.toString(), Toast.LENGTH_LONG).show();
    }
框架对应Demo中有这样一句话:
不同组件 (Activity、Fragment、Service等)、不同线程之间都可以通过事件总线来发布事件,它是线程安全的。

* 只要发布的事件的参数类型和tag都匹配即可接收到事件.

 

【第一篇】学习 android 事件总线androidEventbus之sticky事件的传递的更多相关文章

  1. 【第三篇】学习 android 事件总线androidEventbus之发布事件,子线程中接收

    发送和接收消息的方式类似其他的发送和接收消息的事件总线一样,不同的点或者应该注意的地方: 1,比如在子线程构造方法里面进行实现总线的注册操作: 2,要想子线程中接收消息的功能执行,必须启动线程. 3, ...

  2. 【第二篇】学习 android 事件总线androidEventbus之异步事件的传递

    1,不同Activity直接发送Ansy的事件,以及其他任何事件,必须通过 postSticky方式来进行事件的传递,而不能通过post的形式来进行传递:EventBus.getDefault().p ...

  3. 【第三篇】学习 android 事件总线androidEventbus之list数据事件的传递,发送list数据事件到另外一个Activity

    这个和普通的事件总线的发送接收一样. package com.example.mysimpleeventbus; import java.util.ArrayList; import java.uti ...

  4. "浅谈Android"第一篇:Android系统简介

    近来,看了一本书,名字叫做<第一行代码>,是CSDN一名博主写的,一本Android入门级的书,比较适合新手.看了书之后,有感而发,想来进行Android开发已经有一年多了,但欠缺系统化的 ...

  5. 第一篇 关于Android Studio的快捷键

    公司最近要培训Android的课程,但是发现现在官方网站上已经不提供了Eclipse ADT的下载了,都变成了Android Studio,可能是悲催了! 对于很多Eclipse转过来的同学,不适应的 ...

  6. 【第一篇】Android环境搭建

    安装不易,且安且珍惜! 1 下载 Java JDK (http://java.sun.com/javae/downloads/ ) (Windows 版) [配置环境变量]:安装完成后,设置JAVA_ ...

  7. IO操作 第一篇 学习(转载)

    问题8:如何使用通配符搜索指定目录内的所有文件: 解决方案: 使用DirectoryInfo.GetFiles方法的重载版本,它可以接受一个过滤表达式,返回FileInfo数组,另外它的参数还可以指定 ...

  8. 第一篇、Android Supersu 权限管理定制,隐藏过滤权限,指定APP最高权限

    近期有个需求,在预装ROM的时候,须要权限,可是又不同意全部的应用都有权限,仅仅同意自己的应用有最高的权限(当然没有系统签名情况下). 所以.编译了CM 提取了supersu进行了二次定制,让他进行权 ...

  9. 第一篇博客 用笨办法学python-14 提示和传递

    # 代码如下: usr_name = input("")script = input("")prompt = '> 'print("hi %s, ...

随机推荐

  1. BT 的相关资料

    1.Android中bluetooth的架构 http://blog.csdn.net/u011960402/article/details/11035947 2.Android4.0中Bluetoo ...

  2. Homestead 使用总结

    homestead Laravel Homestead是一个官方预封装的Vagrant"箱子" 内置 Nginx.PHP 5.6.MySQL.Postgres.Redis.Memc ...

  3. python报错Could not open PYTHONSTARTUP

    root@liqian-python:/pythonShare/monitor/m_server/core# pythonPython 2.7.10 (default, Oct 14 2015, 16 ...

  4. Memcached内存存储

    早就听说过Memcached独特的内存管理方式,写着篇文章的目的就是了解Memcached的内存管理,学习其源代码. 1.什么是Slab Allocator memcached默认情况下采用了名为Sl ...

  5. 数据库及SQL优化

    一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实施之前,完备的数据库模型的设计是必须的. ...

  6. HDU 5784 How Many Triangles

    计算几何,极角排序,双指针,二分. 直接找锐角三角形的个数不好找,可以通过反面来求解. 首先,$n$个点最多能组成三角形个数有$C_n^3$个,但是这之中还包括了直角三角形,钝角三角形,平角三角形,我 ...

  7. CodeForces 705B Spider Man

    水题. #pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #includ ...

  8. hdu 1531 King

    首先吐槽一下这个题目的题意描述,我看了半天才明白. 下标全部都是乱标的!!!!出题者能不能规范一点下标的写法!!!! 差分约束系统 #include<cstdio> #include< ...

  9. 手动新建MVC控制器和视图,以及数据显示的问题

    一,在C#.NET的MVC项目添加一个控制器,在这个控制器有一个index方法,你可以在index方法上鼠标右键选择添加视图,这可以创建一个包含index.cshtml的View视图的文件夹 < ...

  10. PHP导出一个txt文本文件

    <?php Header( "Content-type:   application/octet-stream "); Header( "Accept-Ranges ...