禁用硬件加速,向后兼容性 [英] Disable hardware acceleration, backward compatibility

查看:162
本文介绍了禁用硬件加速,向后兼容性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在API> = 11个可用的函数( setLayerType(LAYER_TYPE_NONE,空))的一个问题,我的code应该在Android 1.6上运行( API级别4)了。
我曾尝试使用反射像这样:

I have a problem with a function (setLayerType(LAYER_TYPE_NONE, null)) available in api >=11, and my code should run on android 1.6 (API level 4) too. I have tried to use reflection like this:

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 ....

but my app crash at view.setLayerType with java.lang.VerifyError....

没有任何人有任何想法我怎么能解决这个崩溃并获得较低的水平API使用此功能的向后兼容性?

Does anybody have any idea how can I workaround this crash and get a backward compatibility with this function in lower level api?

谢谢,
Arkde

Thanks, Arkde

推荐答案

只是删除​​

view.setLayerType(LAYER_TYPE_NONE, null);

和你应该罚款,出于安全考虑,爪哇/ Android版会先验证它至少运行一个给定类,然后再继续,并在较旧的Andr​​oid操作系统,它不知道如何执行视图的一个镜头。 setLayerType(LAYER_TYPE_NONE,NULL);,它会的任何的$ C $从C类可运行之前抛出一个硬错误

and you should be fine, for security reasons, Java/Android would first verify that it has at least a shot of running a given class before proceeding, and on older Android OS it doesn't know how to execute "view.setLayerType(LAYER_TYPE_NONE, null);", it would throw a hard Error before any code from that class could be run.

既然你已经运行使用反射code,你不应该需要该行code的反正。

Since you've run the code using reflection, you shouldn't need that line of code anyway.

这篇关于禁用硬件加速,向后兼容性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆