什么是“此方法已被弃用”是指应用程序开发人员

我看到不less好的旧有用的方法 ,甚至整个课程都被“弃用和废弃”了。

但是用来调用这些方法的代码仍然可以正常工作。 那么,作为一个Android应用程序开发人员,这对我意味着什么呢?

  1. 只要我想要继续使用此方法,因为更新的SDK将始终保持向后兼容。
  2. 只要我为较旧的目标(例如API 8)构build,它就会工作,但是如果从API 14开始构build,编译器将拒绝完成构build。
  3. (1)和(2)
  4. 其他?

当没有提供替代方法时,这是特别令人困惑的,例如WebView.PictureListener.html#onNewPicture 。

这通常意味着要么做得更好,要么就是弃用的function有一些不可弥补的缺陷,应该避免。 您通常可以继续使用不推荐使用的方法,但build议您切换到一些新的API(在第一种情况下),或者find其他方式来做你想做的事情(在第二种情况下)。

特别是关于onNewPicture ,整个PictureListener接口已被弃用。 如果有的话,没有什么迹象可以取代它。 @CommonsWare在这个主题中的评论是值得思考的:

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

我会用4:

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

其他一些时候,这实际上是可能的。 例如, showDialog方法现在已被弃用,他们推荐使用DialogFragment类。 即使在旧版本的Android中,您也可以使用兼容性库来实现这一点。

弃用的方法不保证向后兼容。 他们可能会留在那里再发布几个版本,只是为了让所有人都有机会在开发者移除之前从他们那里迁移出去。 他们被弃用的事实意味着开发人员认为有一个更简单,更快,更整洁,或更好的方式来做任何类或方法。

现在更改代码以使用非弃用的接口可能会更好,因为如果您等待并将其删除,则用户将看到崩溃和错误。

即使他们被弃用,他们也可能编译但不工作。 Google决定在低操作系统级别删除各种function。

例如。 谷歌,在Android 2.3版弃用了许多但不是所有的方法API,允许通话logging。 他们编译好,但不能从Android 2.3以上的function,并转发任何Android手机设备,或具有手机function的平板电脑。

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

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

但是,它们不能在SDK中使用,因此编译将会失败,除非您将目标/构buildSDK更改为旧版本(或手动包含弃用的类)。

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