我知道将活动上下文作为类的参数发送是一个坏习惯,
但是我有一个应用程序,其中有这么多的应用程序上下文传递给这么多的类,我对此感到担心,并想知道这是否是一个不好的做法?
顺便说一句,我在提到的类中不使用静态变量来存储passs应用程序上下文,但是为了使该类的所有部分成为全局上下文,我通常定义一个全局上下文
上下文mGlobalContext
然后使用
this.mGlobalContext = c
其中c是传递的上下文的参数
答案 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/