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

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

我将通过根据当前API级别决定使用哪些代码的条件来实现这一目标(如下所示)。 我想这是一个很好的方法,我只想询问是否可以使用这么多已弃用的方法(例如display.getWidth() ),因为API级别8和15之间有很多变化。如果是这样,如果它是在这种情况下,好好利用@SuppressWarning("deprecation")

例如,对于API级别 = 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(); } 

谢谢!

你必须问自己一些问题:

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

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

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