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

10-13 03:34