我在 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/