什么是ActivityCompat,我们可以在哪里以及如何使用它?



目前,我正在学习Android开发,在学习的过程中,我遇到了一些事情,比如传递'this' context, ActivityCompat和ContextCompat。什么是ActivityCompat,为什么,如何使用,以及我们应该在哪里使用它?我也试着阅读它的文档,但因为我是新的android,我无法理解它在文档中写的方式。

还有什么是android中的上下文参数,它是如何工作的以及如何使用它。正如我经常看到的,每当上下文被要求在一个方法'this'关键字传递给它。你能用通俗易懂的语言解释一下吗?

ActivityCompat是一个只有静态成员的Java类(类似于Kotlin中的object)。这意味着您永远不会实例化它。它只提供辅助函数。

ActivityCompat特别提供了常规Activity中一些功能的替代方案,当你想要使用的功能在不同版本的Android中不同时,可以使用这些功能。

例如,Android 9 (SDK 28)显然稍微修改了调用Activity.recreate()时发生的细节。如果你的minSdkVersion设置为低于28,你可能想要确保行为是相同的,即使在设备上运行旧版本的Android。要做到这一点,而不是调用recreate()在您的活动,您将调用ActivityCompat.recreate(this)

还有其他各种各样的"竞争"类,如ViewCompat, WindowCompat和windowsetscompat。

不要混淆ActivityCompatAppCompatActivity,这是一个类,你通常会子类创建自己的活动。