Android - 弃用的方法和 minApiLevel

Android - deprecated method and minApiLevel

有人问过类似的问题,但提供的答案并没有真正帮助我。

假设我使用的是已弃用的方法,我的 minApiLevel 是 X。已弃用方法的建议替换具有 api 级别 Y。

当 Y > X(我不能或不想增加 X)时我该怎么办?根据经验(如果有的话),我可以放心地忽略它吗(这意味着它将 永远不会 在 Android 版本上意外地工作,其中该方法已被弃用),或者我应该宁愿实现这两种变体并根据 SDK 版本将它们放在 if-else 中? (假设我对旧的已弃用方法的功能感到满意。)

当一个元素被标记为弃用时,通常会提供一个替代方案,因此必须实现两个变体,使用 if/else 分支来更新和更旧API 级。

继续使用已弃用的元素是一种不好的做法,不鼓励这样做。此外考虑到它最终可能不再工作并在未来的 API 级别中被删除,迫使重新访问和重写您的实现。

A program element annotated @Deprecated is one that programmers are discouraged from using, typically because it is dangerous, or because a better alternative exists. Compilers warn when a deprecated program element is used or overridden in non-deprecated code.

https://developer.android.com/reference/java/lang/Deprecated#:~:text=A%20program%20element%20annotated%20%40Deprecated,overridden%20in%20non%2Ddeprecated%20code.

如果继续使用已弃用的元素会发生什么:

  • 您的代码将继续按原样工作,直到该元素在未来 API 级别从 SDK 中删除,或者 SDK 开发人员决定删除它的功能,这意味着它根本不起作用。
  • 您必须跟踪所有已弃用的用法,并测试在每个新的 API 级别版本中是否仍然有效。
  • 如果已弃用的元素中存在错误,SDK 开发人员并不总是会修复它们,当有替代方案时,他们可能会将其标记为 已过时。请注意,SDK 中的错误意味着 OS 中需要补丁,并非所有供应商都会向其用户提供补丁。