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。
我也在这个项目中使用EventBus,MyBean
中的一个函数是@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.
混乱
我在 Android 项目中使用 androidannotations,我有一个 EBean 定义为:
@EBean(scope = Singleton)
class MyBean {
public void someFunction() {
}
}
这个 bean 是在第一次需要时创建的,也就是说,每当我有:
@Bean
MyBean myBean;
在一些 class。
我也在这个项目中使用EventBus,MyBean
中的一个函数是@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.