在向后兼容的代码中有这么多已弃用的方法可以吗?

Mar*_*Bro 7 android warnings backwards-compatibility deprecated

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

我将通过根据当前API级别决定使用哪些代码来实现这一目标(如下所示).我想这是一个好办法,我只想问是否确定有这么多不赞成的方法(像display.getWidth()),因为API级别8和15之间.如果是的话相当多的变化,如果它是一个良好的使用@SuppressWarning("deprecation")在这个案例?

例如,对于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();
    }
Run Code Online (Sandbox Code Playgroud)

谢谢!

Jas*_*son 9

你必须问自己一些问题:

  • 是否已弃用将执行此代码的API级别?
  • 如果是,建议或可用的替代方案?

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

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