如何了解Android中的每种情况都必须使用哪种上下文?

如何了解Android中的每种情况都必须使用哪种上下文?,android,Android,我正在学习Kotlin,我已经用不同的方式多次填充上下文,比如this,context.application,requireContext()等等 我想知道是否有任何方法可以让我自己知道使用哪种上下文,而不是通过教程复制它们。android中主要有两种类型的上下文&它们都作为类对象提供给您 应用程序上下文 当您需要执行一些不涉及任何视图/UI操作的工作时(您不需要参考/依赖任何UI代码),基本上会提供/使用此上下文 当您直接通过流程执行操作而不需要任何UI交互时(例如,通过内容提供商获取联系人

我正在学习
Kotlin
,我已经用不同的方式多次填充上下文,比如
this
context.application
requireContext()
等等


我想知道是否有任何方法可以让我自己知道使用哪种上下文,而不是通过教程复制它们。

android中主要有两种类型的上下文&它们都作为类对象提供给您

  • 应用程序上下文
  • 当您需要执行一些不涉及任何视图/UI操作的工作时(您不需要参考/依赖任何UI代码),基本上会提供/使用此上下文

    当您直接通过流程执行操作而不需要任何UI交互时(例如,通过内容提供商获取联系人列表),这非常有用

    这样,您可以将其视为应用程序中所有其他上下文的父代,显然这对于给定的过程是一致的。

    此上下文通过应用程序的应用程序类检索,或通过请求like(
    activity.applicationContext
    )通过任何其他活动检索

  • 活动上下文
  • 这个上下文基本上只限于你现在从事的特定活动。这对于主要执行UI操作很有帮助,因为您的上下文是您当前所在的同一UI的一部分

    是的,你可以认为这是一个可以根据活动变化而改变的子上下文。在大多数情况下,不建议跨UI/活动存储和共享此上下文,因为它可能导致内存泄漏

    一旦您进入任何活动类,就可以通过(
    activity.This
    This
    context
    在片段和自定义视图中)检索此上下文



    我个人同意,从一开始,Android上的上下文就让人困惑,但如果您了解C/C++,那么我可以将其与“指针”(概念上)联系起来。上下文是给定活动/应用程序类的指针。

    这是一篇关于它的好文章,大多数情况下,您不需要
    上下文
    ,而需要
    资源
    resources
    可以通过示例访问字符串,这是上下文最常见的用法。如果是意图,则是活动或片段上下文。如果是针对
    ContextCompat
    活动或片段,也可以是
    视图
    上下文。对于样式,它应该始终是活动上下文,并且不知道还有片段context@KristyWelsh如果您参考
    ContextWrapper
    的文档,则没有与片段单独关联的上下文。片段将活动上下文用作
    ContextWrapper