将演示者放在范围内的最佳做法是什么?
我们可以在@Singleton 或@AppScope 上毫无问题地拥有演示者吗?
是否应该将它们放在@ActivityScope 中以便在每次销毁活动时销毁它们?
将演示者放在范围内的最佳做法是什么?
我们可以在@Singleton 或@AppScope 上毫无问题地拥有演示者吗?
是否应该将它们放在@ActivityScope 中以便在每次销毁活动时销毁它们?
将演示者放在范围内的最佳做法是什么?
通常,演示者应该在某个范围内。不将它放在任何范围内都会导致问题,因为每次您请求演示者时,它都会创建一个新的演示者。
您选择的范围主要取决于您的编程风格,但最常见的可能是@PerActivity
,作为遵循 Activity 生命周期的范围。(就像你可以使用@PerFragment
片段及其生命周期之类的东西一样)
我们可以在@Singleton 或@AppScope 上毫无问题地拥有演示者吗?
是和不是。寿命更长的对象引用寿命较短的@Singleton
对象(例如,引用活动生命周期对象的对象)通常不是一个好的做法,可能会导致内存泄漏。
您可以通过正确添加/删除较短生命周期的对象(例如 add in onCreate
、 remove in onDestroy
)或使用WeakReference
.
一些程序员会将他们的演示者保留为@Singleton
或以某种类似的方式并交换视图,但这同样取决于您喜欢您的代码的方式。它会起作用,但您必须确保您引用了哪些对象并在之后进行清理。
是否应该将它们放在@ActivityScope 中以便在每次销毁活动时销毁它们?
这是迄今为止最简单的选择,因为您可以毫无问题地引用 Activity 或任何其他依赖它的东西。通过这种方式,您很可能不必担心内存泄漏或其他问题。
最后它是你的代码,你必须做最适合你的事情。