gpt4 book ai didi

android - Roboguice/getInstance + 最佳实践

转载 作者:行者123 更新时间:2023-11-30 04:34:29 28 4
gpt4 key购买 nike

我刚开始使用 Roboguice (+Guice),我不确定如何使用它的最佳实践。

在我的 Activity 中,我有大约 5 个函数(大约 30 个函数)使用一个名为“ProviderQueries”(单例)的对象。我可以通过两种方式使用它:

1.)

    protected void onResume() {
super.onResume();
getInjector().getInstance(ProviderQueries.class).setLanguage("EN");
}

2.)

class MyActivity extends RoboActivity {
@Inject
private ProviderQueries pv;

...

protected void onResume() {
super.onResume();
pv.setLanguage("EN");
}
}

1 - 太长了,但是 ProviderQueries 的实例在需要的地方使用了
2 - 简短而漂亮,但“pv”可用于整个 Activity,但仅在 5 个不同的函数中需要...

您会使用哪种方法,或者您有更好的解决方案?

提前致谢!

最佳答案

这是一个判断电话。对我来说,5 个函数似乎足以将它放在一个成员变量中,它使用更清晰的语法并减少对注入(inject)器的显式依赖。我明白你关于它没有被用于所有 30 种方法的观点,但在我个人看来,这似乎是次要问题(当然你自己的审美感可能会有所不同)。

如果 ProviderQueries 占用大量内存,您可能需要考虑使用选项 2 而不是 1,因为选项 1 将使对象在 Activity 期间保持 Activity 状态。对大多数对象来说不是一个考虑因素,但对某些对象来说可能是个问题。

如果您不使用 Guice,您将如何访问您的单例?大概是通过访问器方法?当然,您始终可以编写自己的访问器以更紧凑的方式为您执行#2,尽管它不会绕过每次访问单例所产生的小反射开销。

关于android - Roboguice/getInstance + 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7104092/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com