带有支持库的Android应用程序,其代码在较新操作系统上运行时执行

带有支持库的Android应用程序,其代码在较新操作系统上运行时执行,android,android-support-library,Android,Android Support Library,即使这是一个一般性的问题,我也会用一个更容易理解的例子来提问 场景: 我正在使用支持库7和操作栏功能。一位用户正在安卓2.2(API 8)设备上安装该应用程序。 我正在使用支持库7和操作栏功能。一位用户正在安卓4.3(API 18)设备上安装该应用程序。 显然,在运行时场景1将运行受支持库的代码。但是场景2会发生什么呢?它会运行操作系统代码还是支持库代码 我真的希望它能运行操作系统代码 编辑 我知道Java的工作方式是通过在构建时确定的完全限定名来解析方法(如@adelphus所写)。因

即使这是一个一般性的问题,我也会用一个更容易理解的例子来提问

场景:

  • 我正在使用支持库7和操作栏功能。一位用户正在安卓2.2(API 8)设备上安装该应用程序。
  • 我正在使用支持库7和操作栏功能。一位用户正在安卓4.3(API 18)设备上安装该应用程序。
  • 显然,在运行时场景1将运行受支持库的代码。但是场景2会发生什么呢?它会运行操作系统代码还是支持库代码

    我真的希望它能运行操作系统代码

    编辑
    我知道Java的工作方式是通过在构建时确定的完全限定名来解析方法(如@adelphus所写)。因此,支持库代码将运行。但如果我是实现支持库的人,我会做以下工作:

  • 在运行时检查操作系统的版本
  • 如果操作系统具有当前的对象/方法,我将调用操作系统实现(实际上,在这种情况下,支持库只是操作系统功能的包装器)。
  • 如果这是一个旧的操作系统,我将自己实现这个行为
  • 那么,它是作为包装器作用于较新版本,还是在这两种情况下都使用内部实现


    谢谢

    它将运行支持库

    Java(以及Android应用程序)的工作方式是,方法通过构建时确定的完全限定名称来解析。因为你会根据支持库构建应用程序,所以不管它在哪个版本的Android上运行,都会被称为支持库


    事实上,这对最终用户应该没有影响。支持库的目的是为旧版本的Android提供相同的行为,而旧版本的Android没有新版本的功能。如果最终结果相同,您为什么会关心它是否调用支持库?

    它将运行支持库

    Java(以及Android应用程序)的工作方式是,方法通过构建时确定的完全限定名称来解析。因为你会根据支持库构建应用程序,所以不管它在哪个版本的Android上运行,都会被称为支持库


    事实上,这对最终用户应该没有影响。支持库的目的是为旧版本的Android提供相同的行为,而旧版本的Android没有新版本的功能。如果最终结果相同,您为什么会关心它是否正在调用支持库?

    谢谢。我编辑了我的问题,以便更好地解释我的意思。我相信它是作为较新版本的操作系统的包装器实现的,正如问题所假设的,但我不确定。谢谢。我编辑了我的问题,以便更好地解释我的意思。我相信它是作为较新版本的操作系统的包装器实现的,正如问题所假设的,但我不确定。它确实经过优化,可以在可能的情况下使用操作系统代码。@danny117你找到任何说明这一点的文档了吗,或者你只是相信他们找到了吗?是的@goBeepit dev你必须自己阅读文档。@danny117我读过了,我找过了,但没发现有人提到这一点。在发布答案之前,我也检查了这个网站。我知道有时候会有关于主要功能的问题,很明显,这个人没有打开文档,因为文档写得到处都是。但这里不是这样,这个网站的目的是像我一样提问。此外,在写一个好的答案时(也适用于其他人,因为答案不仅仅适用于我),通常都会提供指向你所说内容的链接。现在,我不知道我是否误解了支持库在可能的情况下使用实际代码。它确实经过了优化,可以在可能的情况下使用操作系统代码。@danny117您找到任何说明这一点的文档了吗,或者您只是相信他们找到了吗?是的@goBeepit dev您必须自己阅读文档。@danny117我读过了,我找过了,但没发现有人提到这一点。在发布答案之前,我也检查了这个网站。我知道有时候会有关于主要功能的问题,很明显,这个人没有打开文档,因为文档写得到处都是。但这里不是这样,这个网站的目的是像我一样提问。此外,在写一个好的答案时(也适用于其他人,因为答案不仅仅适用于我),通常都会提供指向你所说内容的链接。现在我不知道我是否误解了支持库在可能的情况下使用实际代码。