AndroidAnnotations - 在不添加依赖项的情况下创建单例 EBean

AndroidAnnotations - Create Singleton EBean without adding the dependency

我在 Android 项目中使用 androidannotations,我有一个 EBean 定义为:

@EBean(scope = Singleton)
class MyBean {
    public void someFunction() {
    }
}

这个 bean 是在第一次需要时创建的,也就是说,每当我有:

@Bean
MyBean myBean;

在一些 class。 我也在这个项目中使用EventBusMyBean中的一个函数是@Subscriber。不调用此函数(当发布 Event 时),因为 MyBean 的实例不存在(因为我在任何地方都没有依赖项)。如何创建 MyBean 的实例而不专门在任何地方添加依赖项?

我的临时解决方案是简单地在我的应用程序中定义 bean class。

我认为您正在以最干净的方式进行操作。让您的 CustomApplication class 包含 @Bean MyBean myBean,即使它从不调用其上的函数。对于 AA 和事件总线订阅者 classes,这是我找到的唯一解决方案。

class 需要在某处实例化。由于它是单例,因此在 CustomApplication class 中执行它似乎是最干净的。另一种可能是使 class 成为服务(在 Android 意义上 - "extends Service"),这样您就可以在 AndroidManifest.xml 文件中声明它。但由于您不需要任何 Android 服务功能,这似乎是错误的做法。

事实证明,如果不将 EBean 注入某处,就无法创建它。参考这个问题:https://github.com/excilys/androidannotations/issues/1692

我的解决方案是使用 class EBeanManager(也是 EBean)来简单地注入我需要创建的 bean。 EBeanManager 被注入我的 Application class。我在单独的 class 中这样做的原因是为了避免我的 Application class.

混乱