我正在重新开始研究我之前工作的应用程序,当时我已经围绕Android 2.2 Froyo构建了所有内容.
我已经更新了我的SDK以获取最新的API,并注意到我使用的ClipboardManager功能已被弃用.我更新了代码以使用较新的ClipData模型并在我的Froyo手机上试用了它,当然,我在新代码中得到了一个NoClassDefFoundError.
我已经浏览了一下,并没有找到任何关于保持向后兼容性的一般策略的真实讨论.
我不完全确定我应该如何处理这个以及API不同的其他情况,因为我希望所有版本的用户都能够使用我的应用程序.
我应该按如下方式进行检查吗?
if(version == old){
use old API;
} else {
use new API;
}
Run Code Online (Sandbox Code Playgroud)
如果是这样,我已经弃用了我的类中的代码,Eclipse将永远发出警告.
另一方面,我可以构建一个旧版本的API,并希望新版本可以正常处理它.但是当有更好的替代方案时,我冒着构建有缺陷或低性能代码的风险.
处理这个问题的最佳方法是什么?
我正在编写一个针对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)
谢谢!