android – 我可以在基础和子类上注册Otto总线吗?

android – 我可以在基础和子类上注册Otto总线吗?,第1张

概述我在我的 Android应用程序中使用Otto事件总线.我已经阅读了GitHub文档和在线发布的有关层次结构遍历如何工作的各种问题: “注册只能找到直接类类型的方法.与Guava事件总线不同,Otto不会遍历类层次结构,而是从基类或带注释的接口添加方法” 我理解如果在子类上注册总线,则不会添加基类中的方法.所以我的问题是,我可以在子类中注册一个总线并在基类中注册另一个总线吗? public cla 我在我的 Android应用程序中使用otto事件总线.我已经阅读了GitHub文档和在线发布的有关层次结构遍历如何工作的各种问题:

“注册只能找到直接类类型的方法.与Guava事件总线不同,otto不会遍历类层次结构,而是从基类或带注释的接口添加方法”

我理解如果在子类上注册总线,则不会添加基类中的方法.所以我的问题是,我可以在子类中注册一个总线并在基类中注册另一个总线吗?

public class BaseActivity extends Activity    ...    baseBus.register(this);    @Subscribe public voID baseAnswerAvailable(BaseAnswerAvailableEvent event) {        // Todo: React to the event somehow in the base class    }public class MainActivity extends BaseActivity    ...    bus.register(this);    @Subscribe public voID answerAvailable(AnswerAvailableEvent event) {        // Todo: React to the event somehow    }

是否会调用baseAnswerAvailable和answerAvailable方法?

解决方法 实际上答案是肯定的,这就是方法

https://github.com/square/otto/issues/26#issuecomment-33891598

public class ParentActivity extends Activity {protected Object busEventListener;@OverrIDeprotected voID onCreate(final Bundle savedInstanceState) {    super.onCreate(savedInstanceState);     busEventListener = new Object() {        @Subscribe        public voID onReceiveLoginEvent(final LoginEvent event) {            ParentActivity.this.onReceiveLoginEvent(event);        }        @Subscribe        public voID onReceivelogoutEvent(final logoutEvent event) {            ParentActivity.this.onReceivelogoutEvent(event);        }    };    BusProvIDer.getInstance().register(busEventListener);}//subclasses extend me. This can be abstract,if necessary.protected voID onReceiveLoginEvent(final LoginEvent event) {    Log.d("Tag","LoginEvent");}//subclasses extend me. This can be abstract,if necessary.protected voID onReceivelogoutEvent(final logoutEvent event) {    Log.d("Tag","logoutEvent");}@OverrIDeprotected voID onDestroy() {    super.onDestroy();    BusProvIDer.getInstance().unregister(busEventListener);}}
总结

以上是内存溢出为你收集整理的android – 我可以在基础和子类上注册Otto总线吗?全部内容,希望文章能够帮你解决android – 我可以在基础和子类上注册Otto总线吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1127978.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存