目前,我正在学习Android开发,在学习过程中遇到了很多问题,例如传递“this”上下文、ActivityCompat和ContextCompat。什么是ActivityCompat?我们应该在哪里、如何使用它?我尝试阅读了相关的文档,但由于我是Android新手,无法理解文档中的写作方式。
另外,在Android中,什么是上下文参数,它的作用是什么,如何使用它?当方法中要求上下文时,通常会将“this”关键字传递给它。您能否用易于理解的语言解释一下?
目前,我正在学习Android开发,在学习过程中遇到了很多问题,例如传递“this”上下文、ActivityCompat和ContextCompat。什么是ActivityCompat?我们应该在哪里、如何使用它?我尝试阅读了相关的文档,但由于我是Android新手,无法理解文档中的写作方式。
另外,在Android中,什么是上下文参数,它的作用是什么,如何使用它?当方法中要求上下文时,通常会将“this”关键字传递给它。您能否用易于理解的语言解释一下?
ActivityCompat是一个仅有静态成员的Java类(类似于Kotlin中的object
)。这意味着您不需要实例化它。它只提供帮助函数。
ActivityCompat专门为某些在不同Android版本上使用不同功能时可以使用的常规Activity中的一些功能提供替代方案。
例如,Android 9(SDK 28)显然略微修改了调用Activity.recreate()
时发生的详细信息。如果您的minSdkVersion
设置低于28,则可能希望确保即使在运行旧版Android的设备上也具有相同的行为。为此,在您的Activity中,您将调用ActivityCompat.recreate(this)
而不是调用recreate()
。
库中还有其他类似于此类的“Compat”类,例如ViewCompat、WindowCompat和WindowInsetsCompat。
不要将ActivityCompat
与AppCompatActivity
混淆,后者是您通常会子类化以创建自己的Activity的类。
this
作为上下文参数传递。但是在 Fragment 中,这样做是行不通的,因为 Fragment 不是 Context 的子类。这是一个令人困惑的主题,很多人认为 Context/Activity/Fragment 的实现是一个相当大的设计失误。 - Tenfour04