Android - 不推荐使用的方法和 minApiLevel
Posted
技术标签:
【中文标题】Android - 不推荐使用的方法和 minApiLevel【英文标题】:Android - deprecated method and minApiLevel 【发布时间】:2021-02-01 07:38:48 【问题描述】:有人提出了类似的问题,但提供的答案并没有真正帮助我。
假设我正在使用已弃用的方法,而我的 minApiLevel 为 X。建议替换已弃用方法的 API 级别为 Y。
当 Y > X(我不能或不想增加 X)时我该怎么办?根据经验(如果有的话),我可以放心地忽略这一点(这意味着它永远不会在不推荐使用该方法的 android 版本上意外工作),还是我应该实现这两个变体并将它们放入if-else 取决于 SDK 版本? (假设我对不推荐使用的旧方法的功能感到满意。)
【问题讨论】:
只使用已弃用的一个。如果它有效,它就有效。此外,如果您不告诉这一切是哪种方法,那就没什么好说的了。太模糊了。 @blackapps 好吧,这就是我问的方式。我想知道在一般情况下在 Android 上使用不推荐使用的方法是否安全。即使它是安全的,如果它不是坏习惯的话。 我认为“宁愿实现这两种变体,并根据 SDK 版本将它们放在 if-else 中”是最好的选择。 【参考方案1】:当一个元素被标记为不推荐使用时,通常会提供一个替代方案,因此必须实现这两个变体,使用 if/else 分支用于新旧 API 级别。
继续使用已弃用的元素是不好的做法,不鼓励使用。此外,考虑到它最终可能不再起作用并在未来的 API 级别中被删除,从而迫使您重新访问和重写您的实现。
注解@Deprecated 的程序元素是不鼓励程序员使用的,通常是因为它很危险,或者因为存在更好的替代方案。当在非弃用代码中使用或覆盖弃用程序元素时,编译器会发出警告。
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 中的错误意味着操作系统中需要补丁,并非所有供应商都会向其用户提供补丁。【讨论】:
好吧,所以我可以,事实上,可以放心地忽略它,但我不应该这样做。谢谢。 (除了这更多是一个个人项目,我不打算在未来增加 api 级别,所以我可能使用一些不推荐使用的方法。)以上是关于Android - 不推荐使用的方法和 minApiLevel的主要内容,如果未能解决你的问题,请参考以下文章
不推荐使用的导入 android.os.AsyncTask 的代码 [重复]
在 Android 和“其他平台”之间制作可移植应用程序的推荐方法
在 Android 6.0 Marshmallow (API 23) 上不推荐使用 getColor(int id)
不推荐使用 RecyclerView 上的 Android setOnScrollListener