gpt4 book ai didi

android - Dagger 2 Scopes,Presenter 放在哪里?

转载 作者:行者123 更新时间:2023-11-29 15:39:05 24 4
gpt4 key购买 nike

将 Presenter 放置在范围中的最佳做法是什么?

我们可以在@Singleton 或@AppScope 上毫无问题地使用 Presenter 吗?

是否应该将它们放在@Act​​ivityScope 中,以便在每次销毁 Activity 时销毁它们?

最佳答案

what would it be the best practice about placing Presenters in a Scope?

通常演示者应该在一些范围内。不将它放在任何范围内都会导致问题,因为每次您请求演示者时,它都会创建一个新的。

您选择哪个范围主要取决于您的编程风格,但最常见的可能是 @PerActivity,作为遵循 Activity 生命周期的范围。 (就像你可以使用类似 @PerFragment 的方式来处理 Fragments 和它们的生命周期)

Could we have Presenters on @Singleton or @AppScope without any problem?

是也不是。较长生命的对象引用较短生命的对象(例如,引用 Activity 生命周期对象的 @Singleton 对象)通常不是可能导致内存泄漏的好做法。

您可以通过适本地添加/删除较短生命周期的对象(例如在 onCreate 中添加,在 onDestroy 中删除)或使用 WeakReference 来避免这些问题>.

有些程序员会将他们的演示者保留为 @Singleton 或以某种类似的方式交换 View ,但这同样取决于您喜欢您的代码的方式。它会起作用,但您必须确保您引用了哪些对象并在之后进行清理。

Should they be placed in an @ActivityScope in order to destroy them each time the activity is destroyed?

这是迄今为止最简单的选项,因为您可以毫无问题地引用 Activity 或依赖于它的任何其他内容。通过这种方式,您很可能不必担心内存泄漏或其他问题。


最后是您的代码,您必须做最适合的事情。

关于android - Dagger 2 Scopes,Presenter 放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44438925/

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