我看到很多good old useful methods甚至整个类都被“弃用并过时”。
但是用于调用这些方法的代码仍然有效。那么,作为Android应用程序开发人员,这对我意味着什么?
如果没有提供替代方案,这尤其令人困惑,例如WebView.PictureListener.html#onNewPicture。
答案 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 22和removed in API level 23。
当然,在实际的Android设备上,该软件包中包含的类仍将在系统库中提供(否则,针对旧版Android的应用程序将不再在该设备上运行)。
然而,它们不再在SDK中可用,因此编译will fail除非您将目标/构建SDK更改为旧版本(或手动包含已弃用的类)。
如果Google真的决定不鼓励使用这些库,他们可以修改实现,以便受影响的类检查正在运行的应用程序的目标API版本并投诉和/或抛出运行时异常。