弃用代码可在所有Android版本和设备上安全使用?

时间:2015-07-17 06:33:54

标签: android deprecated deprecation-warning

我正在开发一个包含大量课程的庞大的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意味着它们可能会在未来版本的平台中删除,因此您应该开始考虑替换它们在代码中的使用,但是如果它仍然受支持且不会产生编译错误,到现在为止它会很好用。这是我对弃用的理解。 这是对吗?

感谢。

4 个答案:

答案 0 :(得分:0)

弃用意味着两件事:

  1. 还有另一种(可能更好的)解决方案
  2. 它不再完全支持
  3. 这意味着您的代码could可以正常运行。但Google / Android并不能保证这一点。

    根据Java documentation@Deprecated注释说:

      

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

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

    你看过或者你知道有support-libraries来帮助你向后兼容吗?

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

developer.android.com上的文档中所述

  

注释为@Deprecated的程序元素是程序员所需要的   不鼓励使用,通常是因为这样做很危险,或者是因为   存在更好的选择。编译器在不推荐使用的程序时发出警告   元素已在不推荐使用的代码中使用或覆盖。

答案 3 :(得分:0)

它可能会停止使用新版本。

示例:LocationManager.addNmeaListener(GpsStatus.NmeaListener监听器)

API 24中已弃用。

停止在API 29(Android 10)中工作。内部没有实现(返回false)。

在文档中:保持向后兼容性的无操作方法。

很难找到旧代码为何停止工作。