示例2-EventBus

本文介绍EventBus作为一种高效事件总线机制,在Android应用中如何替代传统Intent、Handler等进行跨组件通信。采用发布/订阅模式,简化了不同组件间的数据传递。
EventBus是Android下高效的发布/订阅事件总线机制。作用是可以代替传统的Intent,Handler,Broadcast
或接口函数在Fragment,Activity,Service,线程之间传递数据,执行方法。特点是代码简洁,是一种发布

订阅设计模式(Publish/Subsribe),或称作观察者设计模式。


参考:

http://bbs.itcast.cn/thread-83609-1-1.html

http://www.xiaoyaochong.net/wordpress/index.php/2013/11/17/google-guava-eventbus%E5%AE%9E%E4%BE%8B%E4%B8%8E%E5%88%86%E6%9E%90/

http://blog.youkuaiyun.com/harvic880925/article/details/40660137

http://blog.youkuaiyun.com/harvic880925/article/details/40787203

http://blog.youkuaiyun.com/yuanzeyao/article/details/38174537

你遇到的错误: ``` 404︱Resource not found Cannot find net/forge/forge-eventbus/7.0.1/forge-eventbus-7.0.1.jar in local and remote repositories ``` 说明你尝试访问的 **`forge-eventbus-7.0.1.jar` 文件在远程仓库中不存在**,或者你访问的路径有误。 --- ## 🚫 为什么会出现这个错误? ### ✅ 1. `forge-eventbus` 并不是单独发布的库 **Forge 的事件总线 `forge-eventbus` 并不是像 `gson` 或 `log4j` 那样作为一个独立的 JAR 文件单独发布**。它是 **Forge 构建的一部分**,通常被打包在 `forge-x.x.x-universal.jar` 中,而不是单独提供。 ### ✅ 2. Maven 仓库中没有 `forge-eventbus/7.0.1` 这个目录 你访问的地址: ``` https://maven.minecraftforge.net/net/forge/forge-eventbus/7.0.1/forge-eventbus-7.0.1.jar ``` 这个路径是错误的,因为: - `forge-eventbus` 并不是一个独立的 Maven artifact - 版本号 `7.0.1` 并不是 `forge-eventbus` 的版本号,而是 Forge 的版本号的一部分 --- ## ✅ 正确的做法:使用完整的 Forge 依赖 如果你想使用 `forge-eventbus` 中的类(比如 `IEventBus`、`Event` 等),你应该依赖完整的 Forge 构建,而不是单独的 `forge-eventbus`。 --- ## ✅ 示例:使用 Gradle 自动下载 Forge 依赖 在你的 `build.gradle` 中配置如下内容: ```groovy repositories { mavenCentral() maven { url = 'https://maven.minecraftforge.net' } } dependencies { // 使用 Forge 的完整依赖,其中包含 forge-eventbus implementation "net.minecraftforge:forge:1.16.5-36.2.0" } ``` > 注意:`1.16.5-36.2.0` 是一个示例版本号,你可以根据你的 Minecraft 版本选择合适的 Forge 版本。 --- ## ✅ 示例:手动下载 Forge 并提取 `forge-eventbus` 类 如果你**必须手动下载**并使用 `forge-eventbus`,你可以: ### 步骤 1:下载 Forge 的 `universal` JAR 文件 访问: ``` https://maven.minecraftforge.net/net/minecraftforge/forge/ ``` 选择你需要的 Minecraft 版本,例如: ``` 1.16.5-36.2.0/ ``` 然后下载: ``` forge-1.16.5-36.2.0-universal.jar ``` ### 步骤 2:解压 JAR 文件 你可以使用任何 ZIP 解压工具(如 7-Zip)打开 `forge-xxx-universal.jar`,在里面找到: ``` net/forge/eventbus/ ``` 这就是 `forge-eventbus` 的类文件。 ### 步骤 3:将这些类打包为 JAR 或添加为依赖(不推荐) 虽然你可以将这些类提取出来并重新打包成 JAR,但这不推荐,因为它们依赖于其他 Forge 模块,单独使用容易出错。 --- ## ✅ 推荐做法总结 | 目标 | 推荐方式 | |------|-----------| | 使用 `forge-eventbus` 的 API | 通过 Gradle 依赖完整的 Forge 构建 | | 离线开发 | 下载 `forge-xxx-universal.jar` 并添加为本地依赖 | | 查看源码 | 使用 IDE(如 IntelliJ IDEA)附加 Forge 源码 | --- ## ✅ 示例代码:使用 IEventBus(来自 forge-eventbus) ```java import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; @Mod("examplemod") public class ExampleMod { public ExampleMod() { IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); modEventBus.addListener(this::clientSetup); } private void clientSetup(final FMLClientSetupEvent event) { System.out.println("Client setup!"); } } ``` 这段代码使用了 `forge-eventbus` 的 API,但不需要你手动添加该依赖,只要你正确配置了 Forge 依赖即可。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值