不推荐使用的代码可以在所有Android版本和设备上安全地运行?

问题描述 投票:2回答:3

我正在开发一个庞大的Android项目,有很多课程。到目前为止,我们正在使用Android 3.2进行编译并支持Android 2.3。

现在我正在测试使用Android 5.1.1进行编译,但仍然支持Android 2.3。令我惊讶的是,现在很多代码都被弃用了......(getWith(), getDrawable(), setBackgroundDrawable(), HttpRequest, ActivityGroup等等)。这些不推荐使用的函数不会产生编译错误,但它会提供已弃用的警告。

我知道如果SDK_INT低于XX,我可以复制代码并对已弃用的方法进行特殊调用,如果SDK_INT比XX更新,则调用新方法,但这是一个巨大的补丁,需要大量的重复代码大量的类和包中的函数,所以,如果可能的话,我们会先等待,直到我们不需要支持最老的android版本。这意味着继续使用已弃用的方法,例如我们只需要提供4.4的支持,这意味着需要更少的重复代码和函数。

问题是:如果我使用Android 5.1.1进行编译但仍然使用那些已弃用的函数,那么这个庞大的项目将继续适用于所有设备(从2.3到5.1.1)?现在它正在使用Android 3.2进行编译。

我知道Deprecated意味着它们可能会在未来版本的平台中删除,因此您应该开始考虑替换它们在代码中的使用,但是如果它仍然受支持且不会产生编译错误,它将起作用直到现在。这是我对弃用的理解。这是正确的?

谢谢。

android deprecated deprecation-warning
3个回答
0
投票

是的,它应该工作正常。但是你真的应该使用最新的方法而不是弃用的方法,并使用支持库使它与以前的版本兼容。我使用过的所有已弃用的方法都运行良好,但Google不保证会这样做。


0
投票

您可以继续使用已弃用的方法,它们仍应按预期工作。但是你必须要小心,因为它们可能会在将来的版本中删除。

正如developer.android.com的文件中提到的那样

注释@Deprecated的程序元素是程序员不鼓励使用的程序元素,通常是因为它很危险,或者因为存在更好的替代方案。当在不推荐使用的代码中使用或覆盖已弃用的程序元素时,编译器会发出警告。


0
投票

弃用意味着两件事:

  1. 还有另一种(可能更好的)解决方案
  2. 它不再完全支持

这意味着您的代码could运行正常。但Google / Android不保证这一点。

根据Java documentation@Deprecated注释说:

@Deprecated注释表示已弃用标记的元素,不应再使用。只要程序使用带有@Deprecated注释的方法,类或字段,编译器就会生成警告。 [...]

所以请停止使用弃用的方法。 :)

您是否看过或者您知道有support-libraries可以帮助您向后兼容吗?

© www.soinside.com 2019 - 2024. All rights reserved.