我知道minSdkVersion
和targetSdkVersion
是如何工作的,但我需要在这个具体案例中得到确认(我不想忽视任何事情)。
我的应用(游戏)支持Android 2.2及更高版本的所有设备。截至目前,minSdkVersion
和targetSdkVersion
已设置为8(即API级别8,对应于Android 2.2)。
如果为其启用了硬件加速,我的Views
之一会更加顺畅,但我无法在项目中设置它,因为它需要 API级别11 。 (我怎么注意到了?我的一个测试设备在开发者设置中提供了一个“强制GPU映射”复选框,所以当我运行我的应用程序时,我注意到了差异。)
我认为解决方案是将targetSdkVersion
设置为11(但将minSdkVersion
保持为8),并从代码中检查我们是否在API级别11或更高级别上运行,然后启用视图(窗口)的硬件加速。最后一步是需要更高API级别的内容,因为否则在源代码中无法识别FLAG_HARDWARE_ACCELERATED
。
假设我的所有代码仅使用minSdkVersion
API(除了在检查平台版本以便在运行时进行异常调用时,例如硬件加速),是否保证不会在targetSdkVersion
以下的设备上出现问题? (由于上述解决方案,我的意思是。)我想避免我的应用程序在预蜂窝设备上无法正常工作。 (请注意,我也在平台版本的各种设备上测试我的应用程序,因此测试不是问题。)
答案 0 :(得分:1)
在Activity
中,如果您的窗口为API级别11或更高级别,请使用此行为您的窗口设置硬件加速:
if( Build.VERSION.SDK_INT >= Build.HONEYCOMB ) {
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
}
修改强>: 作为编辑的答案,Android Lint可能会抛出一个错误,说它不适用于TargetSDK,但它可以工作,不会为旧版本抛出任何异常。如果是的话,版本以某种方式> 10,这是不可能的。
但是你应该更新你的TargetSDK,因为通过使用硬件加速,你的目标是更高的API目标。