0

举个简单的例子, String.isEmpty()在 API 级别 9 中可用。

如果我想在面向 API 级别低于 9 的应用程序中使用此方法,我将如何处理?

是不是只要找到这个方法的源代码,然后导入类/方法那么简单?- 也许用我自己的包名重命名它以供参考?

我可以编译一个我希望使用的新 API 类的单独 jar 吗?

这是支持库对选定 API 所做的吗?

我是否完全误解了 Android 框架的一些基础知识?如果我有,请友善点,也许可以给我一些阅读材料的链接!

这篇文章提出了一个类似的问题,但答案并没有为我解决上述所有问题。

我提前谢谢你。

4

1 回答 1

2

是不是只要找到这个方法的源代码,然后导入类/方法那么简单?- 也许用我自己的包名重命名它以供参考?

对于像这样微不足道的事情,就像将实现复制并粘贴到您自己的某个静态方法中一样简单。您无法更改String数百万设备上的实现,因此您无法设置isEmpty()APIString级别 8 或更低。但是,您可以使用从源代码中看到的实现借用StringCompat的静态方法创建一个类。isEmpty()

我可以编译一个我希望使用的新 API 类的单独 jar 吗?

这将取决于“新 API 类”是什么。

这是支持库对选定 API 所做的吗?

有点。在某些情况下,Android 支持包进行了其他修改,以允许代码在旧设备上运行。例如,在 Fragment 的原生 API Level 11 实现中,fragment 与 any 一起工作Activity;在 Android 支持包中,片段与FragmentActivity.

Android 支持包中的其他代码片段可能是其原生对应代码的直接克隆,但包和/或类名更改除外。

于 2012-11-05T18:15:26.433 回答