如何避免弃用方法并保持向后兼容性?

时间:2012-09-10 13:07:09

标签: android backwards-compatibility android-support-library

  

可能重复:
  How to deal with deprecated classes in Android to keep compatibility

我遇到了已弃用的Display.getWidth()方法,发现它已被android.view.getSize()替换。但是{C}仅支持getSize(),因为API 13和View似乎不包含在V4 Android支持库中。

因此,如果我想避免弃用的调用,我怎么能在不为各种API级别维护不同的项目/构建的情况下这样做。

2 个答案:

答案 0 :(得分:4)

给定名为Display的{​​{1}}对象,这应该有效:

display

IOW,使用int width=-1; if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB_MR2) { Point size=new Point(); size=display.getSize(size); width=size.x; } else { width=display.getWidth(); } 在"之前"之间进行分支。 """"引入新API的情况。

这需要您的构建目标(项目>属性> Android中的Android)设置为API级别13+,因此您可以调用Build.VERSION.SDK_INT

答案 1 :(得分:2)

有一个官方的Android开发人员课程Creating Backward-Compatible UIs

  

此类演示了如何使用可用的UI组件和API   更新版本的Android以向后兼容的方式确保   您的应用程序仍然在以前版本的平台上运行。

他们提倡将Java接口用于没有后端移植的库,以获得更面向对象的解决方案。然后将这些扩展为两个具体的类:一个为不支持的平台提供备用行为,另一个为支持的平台调用实际的API。

然后有一个工厂类通过根据支持的平台范围检查当前平台来实例化正确的类。最终,它归结为类似if ( Build.VERSION.SDK_INT >= HONEYCOMB_MR2 )的条件。