android - 禁用硬件加速,向后兼容

标签 android compatibility

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

相关文章:

Python 2 与 Python 3 - urllib 格式

android - 应用程序与 Samsung Galaxy Tab 10.1 不兼容

C 代码兼容性

android - sqlite3权限被拒绝android

java - 如何将要同步的电子邮件 ID 传递到 android 中的创建事件日历中?

java - TextView 扩展;不支持的操作异常

ios - 使用约束使应用程序与 iO5 5 和 iOS 6 兼容

android - 找不到名称为 'default' 的配置。安卓工作室

android - 通过node/express js同步本地android数据库

hadoop - hbase和zookeeper的版本