前言
Context 在 Android 开发中几乎无处不在,它是 Android 开发中最重要的东西,所以我们必须了解正确使用它。
错误使用 Context 很容易导致 android 应用程序中的内存泄漏。
关于 Context 主要有以下几个要点:
- 它是应用程序当前状态的上下文。
- 它可用于获取有关活动和应用程序的信息。
- 它可用于访问资源、数据库和共享首选项等。
- Activity 和 Application 类都扩展了 Context 类。
Android 中主要有两种 Context :
- Application Context
它是应用程序,我们存在于应用程序中。例如 - MyApplication(扩展了 Application 类)。它只是 MyApplication 的一个实例。 - Activity Context
它是活动,我们存在于活动中。例如 - MainActivity。它只是 MainActivity 的一个实例。
Application Context
它是一个单例实例,可以在活动中通过 getApplicationContext() . 此上下文与应用程序的生命周期相关联。应用程序上下文可用于您需要其生命周期与当前上下文分开的上下文,或者当您传递超出活动范围的上下文时。
使用示例:如果您必须为您的应用程序创建一个单例对象并且该对象需要一个上下文,请始终传递应用程序上下文。
如果您在此处传递活动上下文,则会导致内存泄漏,因为它将保留对活动的引用,并且活动不会被垃圾收集。
如果您必须在活动中初始化库,请始终传递应用程序上下文,而不是 活动上下文。
只有 getApplicationContext() 当你知道你需要一个可能比你可能拥有的 Context 任何其他东西寿命更长的东西时,你才会使用它 Context 。
Activity Context
当您在活动范围内传递上下文或需要其生命周期附加到当前上下文的上下文时,应使用活动上下文。
使用示例:如果您必须创建一个生命周期附加到活动的对象,则可以使用活动上下文。
什么时候使用哪个 Context?
- 永远记住,在单例的情况下(生命周期附加到应用程序生命周期),总是使用 Application Context。
- 始终尝试使用您可以使用的最近的 Context。当您在 Activity 中时,对于任何 UI 操作(例如显示 toast、对话框等),都需要使用 Activity 上下文。
总结
好了,关于 Context 的介绍就到这里吧,内容还是比较简单易懂的,希望大家通过这篇文章可以理解 Context更多的细节,并且不要去犯使用 Context 时的一些低级错误。