AndroidEventBus

android——消息总线(Eventbus、FlowBus) Eventbus的使用例子 简介:Eventbus 主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。 注意: 1、EventBus.getDefault().register(this); 放在初始化组件之前 (如: findViewById() ) ,一定放... 阅读详情

AndroidEventBus Logo AndroidEventBus

如果你不知道事件总线是什么,那么没有关系,下面我们先来看这么一个场景:

你是否在开发的过程中遇到过想在Activity-B中回调Activity-A中的某个函数,但Activity又不能手动创建对象来设置一个Listener什么的? 你是否想在某个Service中想更新Activity或者Fragment中的界面? 等等之类的组件之间的交互问题……

一经思考,你会发现Android中的Activity, Fragment, Service之间的交互是比较麻烦的,可能我们第一想到的是使用广播接收器来在它们之间进行交互。例如上述所说在Activity-B中发一个广播,在Activity-A中注册一个广播接收器来接受该广播。但使用广播接收器稍显麻烦,如果你要将一个实体类当做数据在组件之间传递,那么该实体类还得实现序列化接口,这个成本实在有点高啊!如下所示 :

    // ActivityA中注册广播接收器
    class ActivityA extends Activity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            registerReceiver(new BroadcastReceiver() {

                @Override
                public void onReceive(Context context, Intent intent) {
                    User person = intent.getParcelableExtra("user") ;
                }
            }, new IntentFilter("my_action")) ;
        }
        // ...... 
    }


    // ActivityB中发布广播
    class ActivityB extends Activity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);


            Intent intent  = new Intent("my_action") ;
            intent.putExtra("user", new User("mr.simple")) ;
            sendBroadcast(intent);
        }
        // ...... 
    }


    // 实体类实现序列化
    class User implements Parcelable {
        String name ;
        public User(String aName) {
            name = aName ;
        }

       // 代码省略

        @Override
        public void writeToParcel(Parcel dest, int flags) {
            dest.writeString(name);
        }
    }

   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48

是不是有很麻烦的感觉!
我们再来看一个示例,在开发过程中,我们经常要在子线程中做一些耗时操作,然后将结果更新到UI线程,除了AsyncTask之外,Thread加Handler是我们经常用的手段。我们看看如下示例:

    class MyActivity extends Activity {

        Handler mHandler = new Handler () {
            public void handleMessage(android.os.Message msg) {
                if ( msg.what == 1 ) {
                    User user = (User)msg.obj ;
                    // do sth
                }
            };
        } ;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            // code ......

            new Thread(
                new Runnable() {
                    public void run() {
                        // do sth
                        User newUser = new User("simple") ;
                        Message msg = mHandler.obtainMessage() ;
                        msg.what = 1 ;
                        msg.obj = newUser ;
                        mHandler.sendMessage(msg) ;
                    }
            }).start();
        }

    }
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

是不是又有相当麻烦的感觉!!!此时,你应该冷静下来思考一下,还有哪些情况适合使用事件总线。例如穿透多个类只为一个回调的Listener、……
事件总线框架就是为了简化这些操作而出现的,并且降低组件之间的耦合而出现的,到底如何解决呢?咱们继续看下去吧。
AndroidEventBus是一个Android平台轻量级的事件总线框架, 它简化了Activity、Fragment、Service等组件之间的交互,很大程度上降低了它们之间的耦合,使得我们的代码更加简洁,耦合性更低,提升我们的代码质量。

在往下看之前,你可以考虑这么一个场景,两个Fragment之间的通信你会怎么实现?
按照Android官方给的建议的解决方法如下: Communicating with the Activity,思路就是Activity实现某个接口,然后在Fragment-A关联上Activity之后将Activity强转为接口类型,然后在某个时刻Fragment中回调这个接口,然后再从Activity中调用Fragment-B中方法。这个过程是不是有点复杂呢? 如果你也这么觉得,那也就是你继续看下去的理由了。

基本结构

结构图
AndroidEventBus类似于观察者模式,通过register函数将需要订阅事件的对象注册到事件总线中,然后根据@Subscriber注解来查找对象中的订阅方法,并且将这些订阅方法和订阅对象存储在map中。当用户在某个地方发布一个事件时,事件总线根据事件的参数类型和tag找到对应的订阅者对象,最后执行订阅者对象中的方法。这些订阅方法会执行在用户指定的线程模型中,比如mode=ThreadMode.ASYNC则表示该订阅方法执行在子线程中,更多细节请看下面的说明。

与greenrobot的EventBus的不同

  1. greenrobot的EventBus是一个非常流行的开源库,但是它在使用体验上并不友好,例如它的订阅函数必须以onEvent开头,并且如果需要指定该函数运行的线程则又要根据规则将函数名加上执行线程的模式名,这么说很难理解,比如我要将某个事件的接收函数执行在主线程,那么函数名必须为onEventMainThread。那如果我一个订阅者中有两个参数名相同,且都执行在主线程的接收函数呢? 这个时候似乎它就没法处理了。而且规定死了函数命名,那就不能很好的体现该函数的功能,也就是函数的自文档性。AndroidEventBus使用注解来标识接收函数,这样函数名不受限制,比如我可以把接收函数名写成updateUserInfo(Person info),这样就灵活得多了。
  2. 另一个不同就是AndroidEventBus增加了一个额外的tag来标识每个接收函数可接收的事件的tag,这类似于Broadcast中的action,比如每个Broadcast对应一个或者多个action,当你发广播时你得指定这个广播的action,然后对应的广播接收器才能收到.greenrobot的EventBus只是根据函数参数类型来标识这个函数是否可以接收某个事件,这样导致只要是参数类型相同,任何的事件它都可以接收到,这样的投递原则就很局限了。比如我有两个事件,一个添加用户的事件, 一个删除用户的事件,他们的参数类型都为User,那么greenrobot的EventBus大概是这样的:
private void onEventMainThread(User aUser) {
    // code 
}
   
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

如果你有两个同参数类型的接收函数,并且都要执行在主线程,那如何命名呢 ? 即使你有两个符合要求的函数吧,那么我实际上是添加用户的事件,但是由于EventBus只根据事件参数类型来判断接收函数,因此会导致两个函数都会被执行。AndroidEventBus的策略是为每个事件添加一个tag,参数类型和tag共同标识一个事件的唯一性,这样就确保了事件的精确投递。
这就是AndroidEventBus和greenrobot的EventBus的不同,当然greenrobot出于性能的考虑这么处理也可以理解,但是我们在应用中发布的事件数量是很有限的,性能差异可以忽略,但使用体验上却是很直接的。另外由于本人对greenrobot的EventBus并不是很了解,很可能上述我所说的有误,如果是那样,欢迎您指出。

AndroidEventBus起初只是为了学习,但是在学习了EventBus的实现之后,发现它在使用上有些不便之处,我想既然我有这些感觉,应该也是有同感之人,在开发群里交流之后,发现确实有这样的情况。因此才将正式地AndroidEventBus以开源库的形式推出来,希望能够帮助到一些需要的人。当然,这个库的成长需要大家的支持与测试,欢迎大家发 pull request。

使用AndroidEventBus

你可以按照下面几个步骤来使用AndroidEventBus.

  • 1 注册事件接收对象
public class YourActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);
        // 注册对象
        EventBus.getDefault().register(this);
    }

    @Override
    protected void onDestroy() {
        // 不要忘记注销!!!!
        EventBus.getDefault().unregister(this);
        super.onDestroy();
    }
}

   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 2 通过Subscriber注解来标识事件接收对象中的接收方法
public class YourActivity extends Activity {
    // code ......

    // 接收方法,默认的tag,执行在UI线程
    @Subscriber
    private void updateUser(User user) {
        Log.e("", "### update user name = " + user.name);
    }

    // 含有my_tag,当用户post事件时,只有指定了"my_tag"的事件才会触发该函数,执行在UI线程
    @Subscriber(tag = "my_tag")
    private void updateUserWithTag(User user) {
        Log.e("", "### update user with my_tag, name = " + user.name);
    }

    // 含有my_tag,当用户post事件时,只有指定了"my_tag"的事件才会触发该函数,
    // post函数在哪个线程执行,该函数就执行在哪个线程    
    @Subscriber(tag = "my_tag", mode=ThreadMode.POST)
    private void updateUserWithMode(User user) {
        Log.e("", "### update user with my_tag, name = " + user.name);
    }

    // 含有my_tag,当用户post事件时,只有指定了"my_tag"的事件才会触发该函数,执行在一个独立的线程
    @Subscriber(tag = "my_tag", mode = ThreadMode.ASYNC)
    private void updateUserAsync(User user) {
        Log.e("", "### update user async , name = " + user.name + ", thread name = " + Thread.currentThread().getName());
    }
}
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

接收函数使用tag来标识可接收的事件类型,与BroadcastReceiver中指定action是一样的,这样可以精准的投递消息。mode可以指定目标函数执行在哪个线程,默认会执行在UI线程,方便用户更新UI。目标方法执行耗时操作时,可以设置mode为ASYNC,使之执行在子线程中。

  • 3 在其他组件,例如Activity, Fragment,Service中发布事件
    EventBus.getDefault().post(new User("android"));

    // post a event with tag, the tag is like broadcast's action
    EventBus.getDefault().post(new User("mr.simple"), "my_tag");
   
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

发布事件之后,注册了该事件类型的对象就会接收到响应的事件.

Github链接

欢迎star和fork, AndroidEventBus框架 。

jar文件下载

AndroidEventBus下载 ;

Android事件总线2 EventBus3.2详解和使用 一、概述 我们在上一篇文章中介绍了EventBus普通事件和粘性事件的使用,对EventBus也有了一个大概的了解,但是我们对事件和发布者订阅者的关系有没有弄清楚呢?继续来深入了解。 EventBus使用的是发布/订阅者模式: 发布者通过EventBus发布事件,订阅者通过EventBus订阅事件,当发布者发送事件时,订阅该事件的订阅者的事件处理方法将被调用。从图中看出,发布者发送一个事件时,则该事件将会同时传递给一个或多个该事件的订阅者。 什么是发布/订阅者模式? 订阅者(Subscriber)把自己想 阅读详情

相关推荐

如何入门强化学习

很多同学在入门强化学习的时候都会遇到困难,那我这里就简单介绍一下应该如何入门强化学习,并以开源代码为例详解强化学习实战。

seeksister的博客 3304

Android 事件总线(EventBus)

EventBus的使用

weixin_45568421的博客 851

(八)基于MuJoCo的LeRobot SO100仿真操控实战指南(操作优化)

本文详细介绍了如何在MuJoCo仿真环境中搭建并优化LeRobot SO100机械臂的操控。通过两种核心模式(纯键盘仿真与实机镜像同步)的实战演示,重点讲解了关键的参数标定方法,以实现虚拟模型与真实硬件的精准同步。文章还提供了性能优化技巧,旨在帮助开发者构建高效、安全的机器人算法开发与测试流程。

weixin_29083649的博客 319

AndroidEventBus的使用

添加依赖 compile ‘org.simple:androideventbus:1.0.5.1’ 发送数据EventBus.getDefault().post( event); 可以发送的数据包括基本数据类型,可以是字符串,也可以是对象。接收事件1.注册eventbus(在各组件的创建的时候注册,如Activity的onCreat方法)EventBus.getDefault().registe

TianFB的博客 1128

802.1AS-2011_Gptp协议栈

GPTP(广义时钟同步协议,或IEEE 802.1AS)的基本功能是确保局域网中所有的时钟都同步,并提供时间信息。这种协议用于在局域网中进行同步和时间对齐,其目的是确保网络中各设备的时间一致性。

weixin_49041703的博客 2543

一文吃透 ABAP RESTful Application Programming Model(RAP):从数据建模与行为,到业务服务暴露,再到服务消费

本文介绍了SAP ABAP统一编程模型RAP的核心架构与实践方法,通过构建完整的ZTRAVEL和ZBOOKING业务对象,演示了从数据建模、行为定义到服务暴露的全流程。文章详细说明了RAP三层架构(数据与行为层、服务提供层、服务消费层)的实现方式,包括CDS视图实体定义、行为定义(BDEF)中的事务能力声明、投影与服务绑定等关键步骤。特别强调了ABAP Cloud环境下的开发限制和最佳实践,如使用GUID和late numbering机制,以及如何通过EML语言操作业务对象。最后提供了完整的代码示例,展示了

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 522

AndroidEventBus(事件总线)了解+实战体验

大家好,今天咱们来说说本人最近使用到的一个新的开源工具类,也就是今天的主人公AndroidEventBus,叫做事件总线,刚开始看到这个名字的时候我以为就是之前使用到的EventBus,于是乎好奇的我就接着研究了一下,果然它是类似EventBus的消息处理机制,提供了更好的使用性,我便希望把它集成到我正在开发的工程里,因为工程较大以及代码较为繁琐,我不敢轻易的集成与使用,所以我先写了一个简单的例子验

我是紫色紫色的专栏 7536

YOLOv10改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型

本文记录的是基于MobileNet V3的YOLOv10目标检测轻量化改进方法研究。的模型结构是通过得来的,其中的基础模块结合了的深度可分离卷积、的线性瓶颈和倒置残差结构以及MnasNet中基于挤压和激励的轻量级注意力模块,使模型在性能、效率和灵活性方面都具有显著的优势。本文在替换骨干网络中配置了原论文中的small和large2种模型,以满足不同的需求。

Limiiiing的博客 514

AndroidEventBus 使用教程

AndroidEventBus 是一个针对 Android 平台的事件总线库,它简化了不同组件(如 Activity、Fragment、Service 等)之间的通信。通过使用 AndroidEventBus,开发者可以轻松地在应用程序中发布和订阅事件,从而避免了传统广播机制的繁琐和复杂性。 ## 项目快速启动 ### 添加依赖 首先,在项目的 `build.gradle` 文件中添加以下依...

gitblog_01145的博客 908

UFS总体介绍及FPGA开发

通过实现UFS的主控制器、设备控制器等组件,我们可以在FPGA上进行UFS开发,并实现高速数据传输和低功耗特性的存储解决方案。物理层负责传输物理信号,数据链路层提供数据包的传输和错误检测功能,传输层处理数据包的分段、重组和重传,逻辑层管理设备和主控制器之间的命令和数据传输,文件系统层负责文件管理和数据存储。在本文中,我们将介绍UFS的总体架构和特性,并探讨如何在FPGA上进行UFS开发。这些组件的实现涉及到UFS协议的具体细节和硬件平台的特性,因此需要参考UFS协议规范和FPGA开发平台的相关文档。

PodProgram的博客 2136

TIA protal与SCL从入门到精通(1)——SCL编程入门

SCL语言是由Pascal而生的结构化程序语言,与梯形图相(LAD)比,SCL语言的灵活程度更高,易于编写控制算法。 本教程基于的平台如下 软件:TIA 15.1 CPU 1516 (1)直接创建纯SCL的程序块儿; (2)在LAD/FBD中在插入SCL程序段。 在程序段中直接右击插入即可,但是插入的程序段并不能完全使用SCL语法,GOTO等跳转指令就不能使用。在SCL中一般不能使用绝对地址进...

苦走一口田 7万+

【亲测免费】 AndroidEventBus 使用教程

AndroidEventBus 是一个轻量级的事件总线库,旨在简化 Android 应用中不同组件(如 Activity、Fragment、Thread、Service 等)之间的通信。通过发布-订阅模式,AndroidEventBus 使得组件间的通信变得更加方便和高效。 ## 项目快速启动 ### 1. 下载并导入库 首先,从 GitHub 上下载 AndroidEventBus 库: ...

gitblog_00792的博客 806

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

AndroidEventBus初试

Eventbus是一个发布/订阅的事件总线。 四元素分别是发布者,订阅者,事件及总线。 1.  订阅者通过EventBus.getDefault().register(this);订阅事件                          EventBus.getDefault().unregister(this);//取消订阅 2.  发布者通过EventBus.getDefau

M_iranda的专栏 750

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Android事件总线 ( AndroidEventBus ) 开源库发布

AndroidEventBus是一个Android平台的事件总线开源库, 它简化了Activity、Fragment、Service等组件之间的交互,很大程度上降低了它们之间的耦合,使得我们的代码更加简洁,耦合性更低,提升我们的代码质量。

Mr.Simple的专栏 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

AndroidEventBus教程

每一次探索都源于好奇 一、说明:本系列主要是讲一些开源框架的使用,帮助程序员更好更快的使用开源框架,以下内容出于本人对框架的理解,如果有不对或者不准确的地方请评论,谢谢。 我比较喜欢带着问题去研究东西,所以我列出以下几个问题,希望你们一样可以带着疑问去看,问题如下:二、问题: AndroidEventBus是什么? 它和EventBus以及OTTO有什么关系,又有什么区别? 它修复集合传递的问题了

探索之路 571

探索高效Android编程:AndroidEventBus详解与实践

在Android开发中,组件间的通信是不可或缺的一环,而`AndroidEventBus`就是一款为简化这种通信设计的开源库。本文将深入探讨其工作原理、优势以及如何在项目中应用,帮助开发者更好地理解和利用这款强大的工具。 ## 项目简介 是由[bboyfeiyu](https://github.com/bboyfeiyu)开发的一款轻量级事件总线框架。它借鉴了Google的 EventBus...

gitblog_00003的博客 944

AndroidEventBus 发布者发布一次订阅者接收到多次问题

因为自定义的载体只实现 Object 接口,List 中只存放自定义载体类和 Object 类,没有复杂的继承关系,也没有重复的情况。

zzh_3303097051的博客 1115

AndroidEventBus 项目常见问题解决方案

AndroidEventBus 是一个轻量级的 EventBus 库,专为 Android 平台设计。它简化了 Activity、Fragment、Thread、Service 等组件之间的通信,降低了组件之间的耦合度,从而提高了代码的可维护性和质量。该项目主要使用 Java 语言编写,适合 Android 开发者使用。 ## 新手使用注意事项及解决方案 ### 1. 注册和注销事件监听器 ...

gitblog_00172的博客 514

掌握AndroidEventBus的ThreadMode:UI线程与异步处理最佳实践

AndroidEventBus是一款轻量级的Android事件总线库,能够简化Activity、Fragment、线程和服务之间的通信。在使用过程中,正确理解和运用ThreadMode是确保事件处理高效安全的关键。本文将详细介绍ThreadMode的三种类型及其最佳实践,帮助开发者轻松掌握UI线程与异步处理的精髓。 ## ThreadMode详解:三大线程模型解析 AndroidEventBu

gitblog_00039的博客 951

AndroidEventBus-注解版

解惑 AndroidEventBus:区别于greenrobot的EventBus,是由国内大神进行写类似EventBus也是在此基础上升华的一个开源库,是和greenrobot的EventBus完全是两个不独立的开源项目,一开始我也是摸不清两者以为 都是同一个大神写后来发现是两个不同的开源库。 概述: AndroidEventBus类似于观察者模式,通过register函数将需要订阅事件

google_fly的博客 1万+

告别组件耦合!AndroidEventBus轻量级事件通信实战指南

你是否还在为Android组件间通信的复杂性而头疼?Activity与Fragment的数据传递需要通过接口回调,Service与Activity的交互依赖Binder,线程间通信还要使用Handler?这些传统方式不仅代码冗长,还会导致组件间高度耦合,维护成本激增。本文将全面解析AndroidEventBus——一款专为Android设计的轻量级事件总线框架,带你彻底解决组件通信难题,实现代码解...

gitblog_00026的博客 350

AndroidEventBus性能优化:如何避免内存泄漏与事件风暴

AndroidEventBus作为轻量级的事件总线库,极大简化了Android组件间的通信,但在实际开发中若使用不当,可能引发内存泄漏和事件风暴等性能问题。本文将分享避免这些问题的实用技巧,帮助开发者构建更稳定高效的应用。 ## 一、内存泄漏的根源与解决方案 内存泄漏是Android开发中常见的性能隐患,而EventBus的使用不当是主要诱因之一。AndroidEventBus文档明确指出:*

gitblog_00678的博客 874

AndroidEventBus混淆配置全攻略:确保事件订阅万无一失

AndroidEventBus作为一款轻量级的Android事件总线库,极大简化了Activity、Fragment、线程和服务之间的通信。然而在项目构建发布时,若混淆配置不当,可能导致事件订阅功能失效。本文将提供一套完整的混淆配置方案,帮助开发者确保事件订阅功能在混淆后依然稳定可靠。 ## 为什么需要特殊的混淆配置? AndroidEventBus通过注解`@Subscriber`识别订阅方

gitblog_01173的博客 423

AndroidEventBus高级技巧:@Subscriber注解的5种高级用法

AndroidEventBus是一款轻量级的事件总线框架,通过@Subscriber注解标识订阅方法,实现组件间的解耦通信。本文将详细介绍@Subscriber注解的5种高级用法,帮助开发者更灵活地处理事件订阅。 ## 1. 基础用法:无参数订阅 最基础的@Subscriber注解用法无需任何参数,系统会根据方法参数类型自动匹配事件。 ```java @Subscriber public vo

gitblog_01091的博客 464
上一篇: 百度推送的初级使用
下一篇: 简单处理Android 65536方法越界问题
RayXiong
博客等级 码龄10年 8粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值