我对 api >=11 中可用的函数 (setLayerType(LAYER_TYPE_NONE, null)
) 有疑问,我的代码也应该在 android 1.6(API 级别 4)上运行。
我试过像这样使用反射:
try {
Method method = View.class.getMethod("setLayerType", Integer.TYPE, null);
method.invoke(LAYER_TYPE_NONE, null);
view.setLayerType(LAYER_TYPE_NONE, null);
} catch (Throwable e) {
Log.e("_________________test", "Function not found");
}
但我的应用程序在 view.setLayerType 处崩溃并出现 java.lang.VerifyError....
有人知道如何解决此崩溃并在较低级别的 api 中获得与此功能的向后兼容性吗?
谢谢, 阿克德
最佳答案
只需删除
view.setLayerType(LAYER_TYPE_NONE, null);
你应该没问题,出于安全原因,Java/Android 在继续之前会首先验证它至少有一次运行给定类的机会,而在较旧的 Android 操作系统上,它不知道如何执行“view. setLayerType(LAYER_TYPE_NONE, null);",它会在该类的任何代码可以运行之前抛出一个硬错误。
既然您已经使用反射运行了代码,那么无论如何您都不需要那行代码。
关于android - 禁用硬件加速,向后兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9886772/