是否应避免将应用程序上下文传递给应用程序中的多个类?

时间:2018-12-23 06:22:16

标签: android

我知道将活动上下文作为类的参数发送是一个坏习惯,
但是我有一个应用程序,其中有这么多的应用程序上下文传递给这么多的类,我对此感到担心,并想知道这是否是一个不好的做法?

顺便说一句,我在提到的类中不使用静态变量来存储passs应用程序上下文,但是为了使该类的所有部分成为全局上下文,我通常定义一个全局上下文

  

上下文mGlobalContext

然后使用

  

this.mGlobalContext = c

其中c是传递的上下文的参数

2 个答案:

答案 0 :(得分:1)

请阅读 Romain Guy blog,因为他总结说保持活动上下文可能导致内存泄漏,但是如果类之间共享的上下文是应用程序上下文,则可以避免内存泄漏。因此,按照 Romain Guy ,发送application context不会导致您的内存泄漏。 :D

在我看来,我的做法是,仅在需要时才传递上下文,并且在将上下文发送到其他活动之前,需要牢记上下文范围(活动/应用程序的生命周期)。

答案 1 :(得分:1)

据我说: 当您将“活动”用作上下文的占位符时,可以确保使用UI上下文。如果您使用Fragment中的getContext方法,那么您将间接使用Activity(如果您通过Activity中的Fragment Manager附加了Fragment)。

但是view.getContext()不能保证是UI上下文。

如果使用Layout Inflater实例化了View并传递了UI Context,则会返回UI Context。但是,如果通过不传递UI上下文来实例化它,则可以返回另一个上下文。 有关更多详细信息,您可以阅读以下文章: https://www.philosophicalhacker.com/2015/07/14/why-static-references-to-application-contexts-are-probably-not-the-best-idea/