“不推荐使用此方法”对应用程序开发人员意味着什么

时间:2011-12-09 17:16:37

标签: android

我看到很多good old useful methods甚至整个类都被“弃用并过时”。

但是用于调用这些方法的代码仍然有效。那么,作为Android应用程序开发人员,这对我意味着什么?

  1. 根据我的需要继续使用此方法,因为较新的SDK 将始终保持向后兼容。
  2. 只要我为较旧的目标(例如API 8)构建,它就会起作用,但是 如果我从API 14构建,编译器将拒绝完成 建设。
  3. (1)和(2)
  4. 其他?
  5. 如果没有提供替代方案,这尤其令人困惑,例如WebView.PictureListener.html#onNewPicture

5 个答案:

答案 0 :(得分:26)

这通常意味着有更好的做事方式,或者被弃用的功能有一些不可修复的缺陷,应该避免。您可以通常继续使用已弃用的方法,但建议您切换到一些新的API(在第一种情况下)或找到其他方式来做你想要的(在第二种情况下)。

特别针对onNewPicture,不推荐使用整个PictureListener接口。没有任何迹象表明应该取代它。 @ {CommonsWare在this thread中的评论值得深思:

  

可以想象,WebKit中的上游变化正在推动弃用,并且在未来的某个版本中可能会完全失去对PictureListener的支持。

答案 1 :(得分:13)

我会选择4:

它基本上会告诉你不鼓励使用方法或类;它们不会100%保持向后兼容性(他们可以决定在将来的版本中不包含该方法),因此您应该尝试使用方法或类的替换。这有时无法使用新方法(例如,如果您想支持运行旧版本的设备)。

其他时候它实际上是可能的。例如,showDialog方法现已弃用,建议使用DialogFragment类。即使在旧版Android中,您也可以使用compatibility library

来实现这一目标

答案 2 :(得分:8)

不保证不推荐使用的方法保持向后兼容。他们可能会继续留在那里以获得更多版本,只是为了让每个人都有机会在开发人员删除它们之前远离它们。他们被弃用的事实意味着开发人员认为有更简单,更快,更整洁,或更好的方式来做任何类或方法。

现在更改代码以使用不推荐使用的界面可能会更好,因为如果您等待并且它已被删除,您的用户将会看到崩溃和错误。

答案 3 :(得分:3)

即使它们被弃用,它们也可以编译但不起作用。谷歌决定在低操作系统级别删除各种功能。

例证。谷歌在Android 2.3版本中弃用了许多但不是所有允许通话记录的方法API。他们编译好但从Android 2.3开始无法运行,并且可以在任何Android手机设备或具有手机功能的平板电脑上转发。

答案 4 :(得分:2)

作为已在以后的API级别中删除的已弃用接口的示例,请考虑使用org.apache.http包:它是deprecated in API level 22removed in API level 23

当然,在实际的Android设备上,该软件包中包含的类仍将在系统库中提供(否则,针对旧版Android的应用程序将不再在该设备上运行)。

然而,它们不再在SDK中可用,因此编译will fail除非您将目标/构建SDK更改为旧版本(或手动包含已弃用的类)。

如果Google真的决定不鼓励使用这些库,他们可以修改实现,以便受影响的类检查正在运行的应用程序的目标API版本并投诉和/或抛出运行时异常。