Java 如何存储上下文?

Java 如何存储上下文?,java,android,android-context,Java,Android,Android Context,如何在Android应用程序中存储上下文? 通常需要在常规类、外部活动(例如数据库适配器)中使用它 我尝试在静态字段中保存上下文,但它可能会调用内存泄漏 如果我在常规类中扩展上下文并在内部调用getApplicationContext(),可能会更好。这样做的好方法是在构造函数中传递上下文。您可以在每个示例代码中看到,上下文被传递到自定义类中作为将来使用的参数 i、 e.在中(这是从web延迟加载图像的非常好的实践),您可以看到构造函数如下所示:publicLazyadapter(活动a,Str

如何在Android应用程序中存储上下文? 通常需要在常规类、外部活动(例如数据库适配器)中使用它

我尝试在静态字段中保存上下文,但它可能会调用内存泄漏


如果我在常规类中扩展上下文并在内部调用
getApplicationContext()
,可能会更好。

这样做的好方法是在构造函数中传递
上下文。您可以在每个示例代码中看到,上下文被传递到自定义类中作为将来使用的参数

i、 e.在中(这是从web延迟加载图像的非常好的实践),您可以看到构造函数如下所示:
publicLazyadapter(活动a,String[]data)

这样,每当您在活动之外并且需要使用它时,您已经将其存储为字段

另一种方法(不推荐)是使用作为应用程序上下文的静态字段

public static final Context = getApplicationContext();

你把它放在启动活动中,就可以在应用程序的整个生命周期中访问应用程序上下文。

最好的方法是将
上下文
变量发送给常规类的每个构造函数(需要上下文)…并将其存储为该类的私有成员…是的,现在我使用静态字段。这是呼叫内存泄漏吗?@bvitalyg是的,它可以。。。“你不应该那样做。”亚历克斯洛克伍德说,如果这是一个选择,他应该知道。但我还补充说,不建议这样做。@thepoosh实际上,我们都错了,因为应用程序上下文是一个全局单例变量,在应用程序的整个生命周期中都会持续存在。。。因此,没有办法真正“泄漏”应用程序上下文。对不起,我误读了你原来的帖子。我只是非常谨慎,即使在回答中提到不可靠的解决方法,因为初学者几乎会听任何用户说的话,如果他们有1000+的声誉…:PQuestion,如果可以将应用程序上下文存储在全局中,那么为什么标准android设计会将活动或上下文作为参数传递?我正在设计一个新的
应用程序
,试图使用更好的OO设计。因此,要使用类似这样的方法将数据存储到DB im,请使用
Activity->Helper->DTO->DAOImpl->DB.
,因此我需要将
上下文一直(通过构造函数)从Activity传递到DAO。这看起来很傻而不是存储在
应用程序中
静态变量