Android 在向后兼容的代码中有这么多不推荐的方法可以吗?
我正在编写一个Android应用程序,它的目标是API级别15,但我还想保持与旧API级别(min sdk 7)的向后兼容性 我将通过根据当前API级别(如下所示)设置条件来决定使用哪种代码来实现这一点。我认为这是一种很好的方法,我只是想问一下,有这么多不推荐的方法(比如Android 在向后兼容的代码中有这么多不推荐的方法可以吗?,android,warnings,deprecated,backwards-compatibility,Android,Warnings,Deprecated,Backwards Compatibility,我正在编写一个Android应用程序,它的目标是API级别15,但我还想保持与旧API级别(min sdk 7)的向后兼容性 我将通过根据当前API级别(如下所示)设置条件来决定使用哪种代码来实现这一点。我认为这是一种很好的方法,我只是想问一下,有这么多不推荐的方法(比如display.getWidth())是否可以,因为API级别8和15之间有很多变化。 如果是这样的话,在这种情况下是否很好地使用了@SuppressWarning(“弃用”) 如果API级别为9,使用多个APK不是更好吗?(即
display.getWidth()
)是否可以,因为API级别8和15之间有很多变化。
如果是这样的话,在这种情况下是否很好地使用了@SuppressWarning(“弃用”)
如果API级别为9,使用多个APK不是更好吗?(即使不建议使用
谢谢!你得问自己几个问题:
- 对于将执行此代码的API级别,它是否已被弃用
- 如果是,是否建议或提供替代方案
getWidth()
不赞成使用,因为它需要API级别13。因此,在API级别13之前,您所拥有的只是getWidth()
,它在当时没有被反对。保留这些不赞成使用的方法的原因主要是考虑到向后兼容性(同时避免破坏每个依赖它的应用程序)
因此,为了回答您的问题,是的,在这种情况下这很好,是的,这是对
@SuppressWarning(“弃用”)
的一个很好的使用。我的目标是API级别15,因此对于某些操作系统版本,它可能会被弃用。我还相信,弃用的代码总会有一个替代方案(或者更确切地说,我正在使用旧API上无法使用的新API,因此我必须修复它以保持兼容性)。那么,有很多这样的条件来保持向后兼容性是好的,还是为IC提供两个APK是个好主意(例如)对于旧版本呢?这很好,也很受鼓励。如果你发布了两个版本的应用程序,一个用于ICS,一个用于ICS之前的版本,你会非常头疼,因为从那时起,你将不得不维护两个独立的代码库。
Display display = ((WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
Point screenSize = new Point();
// calculate the width
float width;
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
display.getSize(screenSize);
width = screenSize.x;
} else {
width = display.getWidth();
}