我应该如何在Android中使用/不使用弃用的方法

NSo*_*uth 6 android deprecated android-version android-timepicker deprecation-warning

我没有问这个问题就太久了.我在Android中遇到过很多方法,这些方法已被弃用,但仍适用于较新版本的API.那么只要它有效,使用弃用方法的风险是什么?

这是一个更具体的问题.我正在使用TimePickers,并且在API 23中不推荐使用getCurrentHour()方法,并将其替换为getHour().我显然不能完全使用getHour(),因为大多数设备尚未在API 23上使用,但是getCurrentHour()对于最新版本的Android 使用"错误"?我应该做以下哪项?

  1. 继续使用getCurrentHour()直到几年过去,API 23成为我的新品minSdkVersion
  2. 在代码中,明确检查API版本并根据结果调用getCurrentHour()或调用getHour()

谢谢你帮我学习.

Com*_*are 10

对于最新版本的Android,使用getCurrentHour()"错误"?

如果"错误"你的意思是它会杀死一只小狗,不,这不会是错的.对于API级别23,它不太可能导致任何类型的问题.

一般来说,"弃用"意味着"我们还有其他我们希望您使用的东西".弃用的东西会发生什么变化:

  • 有时,被弃用的东西在几年后仍可使用.AbsoluteLayout在2009年的API Level 3中被弃用.它在今天仍像当时一样可行.

  • 有时,被弃用的东西会减少功能.ActivityManager出于安全和隐私的原因,不推荐使用各种方法并返回其使用的子集.

  • 有时候,被弃用的东西将被彻底删除(参见:Android 6.0中的HttpClient(或者,实际上,它没有看到它,因为它已被删除)).这很不寻常.

因此,弃用警告是一个需要注意的标志,并且会考虑您的长期策略对于这一特定功能的影响.

我应该做以下哪项?

对于像这个方法重命名一样微不足道的东西,你的第一个选项可能是安全的(坚持使用弃用的方法,直到你的minSdkVersion上升足够高).

但是,对于比这更大的东西,我会选择你的第二个选项.有时,您将明确地执行该版本检查.有时,您可以使用一个库来隐藏版本检查.例如,在几乎任何地方support-v4,你看到一个库...Compat类(如NotificationCompat,ContextCompat,ActivityCompat),这个类的作用是提供一个API相当于最新-和最大API级别,而是一个可以在使用广泛的设备,因为它通过对您进行那些版本检查,在旧设备上优雅地降级.

注意:在创建此答案时,没有实际的小狗受到伤害