给EventBus增加订阅收到消息提醒,用AndroidStudio重新打包成Jar文件

用过EventBus的人都会觉得EventBus很好用,但是EventBus有一个让人很难受的地方—-在你post之后,可能会有几处接收到你post的对象,但是作为开发者,时间长了之后,并不知道在哪几处接收到了订阅的消息。特别是在项目大了之后,到处都在post,但是却不知道哪里接收到了。
所以我简单修改了一下它的源码,让它能支持debug模式。
首先去下载源码

EventBus.java

在EventBus.java中增加isDebug标志位,在Application或MainActivity中初始化。

    private boolean isDebug = false;

    public boolean isDebug() {
        return isDebug;
    }

    public void setIsDebug(boolean isDebug) {
        this.isDebug = isDebug;
    }

重载post方法,从代码中可以看出来,from是直接用from.getClass().getSimpleName()得到文件名,所以在OnClickListener等接口中需要注意,传入MainActivity.this,或Fragment.this

    public void post(Object from, Object event) {
        if (isDebug) {
            Log.d(TAG, event.getClass().getSimpleName() + " is posted by " + from.getClass().getSimpleName());
        }
        post(event);
    }

在invokeSubscriber中增加订阅者受到消息提醒

    public void invokeSubscriber(Subscription subscription, Object event) {
        try {
            if (isDebug) {
                Log.d(TAG, event.getClass().getSimpleName() + " is received by " + subscription.subscriber.getClass().getSimpleName());
            }
            subscription.subscriberMethod.method.invoke(subscription.subscriber, event);
        } catch (InvocationTargetException e) {
            handleSubscriberException(subscription, event, e.getCause());
        } catch (IllegalAccessException e) {
            throw new IllegalStateException("Unexpected exception", e);
        }
    }

这里写图片描述

现在post一个值为”abc”的String,效果如下

这里写图片描述

打包成Jar文件

因为打包花了我很长时间,但是实际上除了下载gradle之外花的时间并不长,在这里稍做记录。

首先新建一个你需要打包的lib文件lib module.
在这个module中,删除src中不必要的文件,在build.gradle中(module中的gradle文件,不是项目的gradle文件),末尾增加

task makeJar(type: Copy) {
    delete 'build/libs/eventbus.jar'
    from('build/intermediates/bundles/release/')
    into('build/libs/')
    include('classes.jar')
    rename ('classes.jar', 'eventbus.jar')
}

makeJar.dependsOn(build)
//在终端执行生成JAR包
// gradlew makeJar

这里写图片描述

然后在左下角的terminal执行gradlew makeJar

这里写图片描述

然后没下载gradle的它会下载gradle。(如果已经下载就不用看这一段了)我是gradle-2.8-all.zip,下载的特别慢,所以一直在”……………………”。
这里有个快速下载的办法,在项目的gradle文件中,找到wrapper下的gradle-wrapper.properties,里面有distributionUrl。我的是https://services.gradle.org/distributions/gradle-2.8-all.zip

这里写图片描述

然后用迅雷或者其他下载工具下载。下载好了之后,去下载一个hfs本地网络服务器,拖进去得到下载地址,然后修改distributionUrl中的地址,变成了http://192.168.0.137/gradle-2.8-all.zip

这里写图片描述

然后重新执行gradlew makeJar,它会瞬间下载文成,接着下载一些配置文件,这里也要花一点时间,这个是没办法,只能慢慢等,然后等待BUILD SUCCESSFUL。
成功后,在lib module中的build下的libs会生成一个jar文件。也就是项目的jar文件。

EventBus.jar下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值