7

我正在编写一个针对 API 级别 15 的 Android 应用程序,但我也想保持与旧 API 级别(min-sdk 7)的向后兼容性。

我将通过设置根据当前 API 级别决定使用哪些代码的条件来实现这一点(如下所示)。我想这是一个很好的方法,我只是想问一下有这么多不推荐使用的方法(比如display.getWidth())是否可以,因为 API 级别 8 和 15 之间有很多变化。如果是这样,如果它很好地使用@SuppressWarning("deprecation")in这个案例?

例如对于 API 级别 <= 8 和 >= 9 使用多个 APK 不是更好吗?(即使developer.android.com不推荐它。

    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();
    }

谢谢!

4

1 回答 1

9

你必须问自己几个问题:

  • 对于将执行此代码的 API 级别,它是否已弃用?
  • 如果是这样,是否建议或提供替代方案?

在您的情况下,getWidth()不推荐使用 using getSize(Point),这需要 API 级别 13。因此,在 API 级别 13 之前,您所拥有的只是getWidth(),当时并未弃用。保留这些已弃用的方法的原因主要是考虑到向后兼容性(同时避免破坏每个依赖它的应用程序)。

所以回答你的问题,是的,在这种情况下这很好,是的,它很好地使用@SuppressWarning("deprecation").

于 2012-04-15T19:02:45.163 回答