禁用硬件加速,向后兼容性 [英] Disable hardware acceleration, backward compatibility
问题描述
我在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版会先验证它至少运行一个给定类,然后再继续,并在较旧的Android操作系统,它不知道如何执行视图的一个镜头。 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屋!