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

标签 android deprecated android-timepicker android-version deprecation-warning

我已经太久没有问这个问题了。我在 Android 中遇到过许多已弃用的方法,但在较新版本的 API 中仍然有效。那么,只要它有效,使用已弃用的方法的风险是什么?

这是一个更具体的问题。我正在使用 TimePickers 和 getCurrentHour()方法在 API 23 中已弃用并替换为 getHour() .我显然不能专门使用 getHour(),因为大多数设备还没有使用 API 23,但是对于最新版本的 Android,使用 getCurrentHour() 是“错误的”吗?我应该做什么?

  1. 继续使用 getCurrentHour() 直到几年过去并且 API 23 成为我的新 minSdkVersion
  2. 在代码中,显式检查 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/

相关文章:

android - 如何显示两个 Activity 之间的进度对话框?

ruby - Ruby Sass弃用-如何查看我的版本是否被弃用

android - DateFormat.is24HourFormat 始终返回相同的结果

Android - 如何以编程方式更改时间选择器模式?

android - 为 ListView 禁用双击

java - Android SetText 不能在 TextVIew 上工作,但值在那里

java - 在模拟器中加载插页式广告时出现 AdMob 错误

android - 菜单按钮和相关 API 从 API 11 及更高版本开始弃用 - 如何处理?

ios - 此动画代码是否已弃用?

android - 在 android 中以 12 或 24 小时格式显示 TimePicker