关于这两个上下文的内容,已经有很多文章了。但是我仍然不太正确。
到目前为止,据我了解:每个实例都是其类的一个实例,这意味着某些程序员建议您this.getApplicationContext()
尽可能频繁地使用它,以免“泄漏”任何内存。这是因为另一个this(获取Activity实例上下文)指向的Activity是每次用户倾斜手机或离开应用程序等时都将销毁的一个。显然,垃圾收集器(GC)无法捕获,因此使用了过多的内存。 ..
但是任何人都可以拿出一些非常好的编码示例,使用它们将是正确的事情this(获取当前Activity实例的上下文),而应用程序上下文将是无用/错误的?
getApplicationContext()
几乎总是错的。Hackborn
女士(等等)已经非常明确,你只用getApplicationContext()
当你知道为什么你使用getApplicationContext()
,只有当你需要使用getApplicationContext()
。
直言不讳,“某些程序员”之所以使用getApplicationContext()(或getBaseContext()程度较小)是因为他们的Java经验有限。他们实现了一个内部类(例如,in中的OnClickListenerfor ),并且需要a 。他们使用或获取对象,而不是使用“获取外部类” 。ButtonActivityContextMyActivity.thisthisgetApplicationContext()getBaseContext()Context
你只用getApplicationContext()
当你知道你需要Context的东西,可以活得比其他任何可能Context您在您的处置。场景包括:
使用getApplicationContext()
,如果你需要的东西绑在Context
本身将具有全局作用域。我在中使用getApplicationContext()
,例如,WakefulIntentService
将静态WakeLock用于服务。既然这WakeLock
是静态的,并且我需要Context
先PowerManager
进行创建,那么使用它是最安全的getApplicationContext()
。
如果要通过绑定实例之间的(即绑定的句柄),则从getApplicationContext()绑定到时使用。Android会通过这些内部跟踪绑定,并保留对创建绑定的的引用。如果从绑定,则新实例将具有对的引用,而对则具有对旧的隐式引用,并且不能对旧实例进行垃圾回收。ServiceActivityServiceConnectionActivityonRetainNonConfigurationInstance()ServiceConnectionsContextsActivityActivityServiceConnectionActivityActivity
一些开发人员将自定义子类的Application用作自己的全局数据,然后通过进行检索getApplicationContext()。当然有可能。我更喜欢静态数据成员,如果出于其他原因,您只能拥有一个自定义Application对象。我使用一个自定义Application对象构建了一个应用程序,发现它很痛苦。哈克伯恩女士也同意这一立场。
以下是无论您在何处都不使用的原因getApplicationContext()
:
它不是一个完整的功能Context
,支持所有Activity功能。您将尝试执行的各种操作Context
将失败,主要与GUI有关。
如果ContextfromgetApplicationContext()
保留了您不清除的调用所创建的某些内容,则可能导致内存泄漏。使用Activity,如果它保留了某物,则一旦Activity收集到垃圾,其他所有内容也会被清除。该Application
对象将在过程的整个生命周期中保留。
实现如下所示 > 其次,我有一个活动范围组件网,我提供了当前活动和需要上下文的不同视图。 @module public class ActivityModule{private
我多年来一直在使用Spring MVC,我试图理解与Spring Boot的一些关键区别。 你能帮我确认一下吗?或者让我明白我在这里遗漏了什么?
Spring Boot对于如何使用Spring构建应用程序有一个看法:例如它具有常规配置文件的常规位置,以及用于常见管理和监视任务的端点。Spring Cloud建立在此之上,并添加了一些可能系统中所有组件将使用或偶尔需要的功能。 引导应用程序上下文 一个Spring Cloud应用程序通过创建一个“引导”上下文来进行操作,这个上下文是主应用程序的父上下文。开箱即用,负责从外部源加载配置属性,还解
我试图并行处理Spring批处理作业中的一些步骤。作业的XML配置如下:
问题内容: 在我的android项目中,我有ImageAdapter类,可以在其中传递应用上下文以满足进一步的需求。 问题是我想使ImageAdapter作为一个单例对象,以便从我的所有活动中轻松访问此类的实例。但是我不知道如何将我的活动之一中的getApplicationContext()方法中的应用程序上下文传递给ImageAdapter。那么,有什么“魔术”可以做到以下几点? 也许您还有其他
我对 Intent 有疑问。我想在Page1.java中继续一个名为ReadXMLFile.java(即上下文)的类的字符串。但是,当Page1.java继续进行时,Android模拟器会警告并关闭应用程序!这是ReadXMLFile的代码.java: 我想切换Page1中名为testo1的字符串。这是Page1.java代码: 在logcat中出现: 为什么应用程序在加载Page1时关闭?我反对