Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在向后兼容的代码中有这么多不推荐的方法可以吗?_Android_Warnings_Deprecated_Backwards Compatibility - Fatal编程技术网

Android 在向后兼容的代码中有这么多不推荐的方法可以吗?

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不是更好吗?(即

我正在编写一个Android应用程序,它的目标是API级别15,但我还想保持与旧API级别(min sdk 7)的向后兼容性

我将通过根据当前API级别(如下所示)设置条件来决定使用哪种代码来实现这一点。我认为这是一种很好的方法,我只是想问一下,有这么多不推荐的方法(比如
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();
    }