我已经太久没有问这个问题了。我在 Android 中遇到过许多已弃用的方法,但在较新版本的 API 中仍然有效。那么,只要它有效,使用已弃用的方法的风险是什么?
这是一个更具体的问题。我正在使用 TimePickers 和 getCurrentHour()方法在 API 23 中已弃用并替换为 getHour() .我显然不能专门使用 getHour()
,因为大多数设备还没有使用 API 23,但是对于最新版本的 Android,使用 getCurrentHour()
是“错误的”吗?我应该做什么?
- 继续使用
getCurrentHour()
直到几年过去并且 API 23 成为我的新minSdkVersion
? - 在代码中,显式检查 API 版本并根据结果调用
getCurrentHour()
或getHour()
?
谢谢你帮助我学习。
最佳答案
is using getCurrentHour() "wrong" for the newest version of Android?
如果“错误”是指它会杀死一只小狗,不,它不会错。对于 API 级别 23,它不太可能导致任何类型的问题。
一般来说,“已弃用”的意思是“我们还有其他东西希望您使用”。弃用的东西会发生什么变化:
有时,已弃用的内容在多年后仍然可用。
AbsoluteLayout
早在 2009 年就已在 API 级别 3 中被弃用。它在今天仍然像当年一样糟糕地工作。有时,已弃用的内容会减少功能。出于安全和隐私原因,
ActivityManager
上的各种方法已弃用并返回它们过去使用的部分内容。有时,已弃用的内容会被彻底删除(请参阅:Android 6.0 中的 HttpClient(或者,实际上,看不到它,因为它已被删除))。这很不寻常。
因此,弃用警告表示要注意并思考针对这一特定功能的长期策略。
Which of the following should I do?
对于像此方法重命名这样微不足道的事情,您可能会选择第一个选项(坚持使用已弃用的方法,直到您的 minSdkVersion
足够高)。
不过,对于任何比这大得多的事情,我会选择你的第二个选项。有时,您会明确地进行版本检查。有时,您可以使用一个库来为您隐藏版本检查。例如,在 support-v4
库中的几乎任何地方,您都可以看到 ...Compat
类(例如,NotificationCompat
、 ContextCompat
, ActivityCompat
),该类的作用是提供相当于最新最好的 API 级别的 API,但可以在广泛的设备上使用,因为它会通过为您执行这些版本检查来在旧设备上优雅地降级。
注意:在创建此答案时没有真正的小狗受到伤害
关于android - 我应该如何在 Android 中使用/不使用已弃用的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32808181/