文档章节

Android 4.4读取过度绘制数

fneg
 fneg
发布于 2017/09/06 14:45
字数 104
阅读 16
收藏 0
private float getOverDrawCounter(){
    Class<?> view= null;
    try {
        view = Class.forName("android.view.View");
        Method getHardwareRender=view.getDeclaredMethod("getHardwareRenderer");
        getHardwareRender.setAccessible(true);

        Object gl20Renderer=getHardwareRender.invoke(getWindow().getDecorView().getRootView());
        if(null!=gl20Renderer){
            Field debugOverdrawLayoutField=gl20Renderer.getClass().getSuperclass().getDeclaredField("mDebugOverdrawLayer");
            debugOverdrawLayoutField.setAccessible(true);

            Object GLES20RenderLayout=debugOverdrawLayoutField.get(gl20Renderer);
            if(null!=GLES20RenderLayout){
                Method getCanvasMethod=GLES20RenderLayout.getClass().getSuperclass().getSuperclass().getDeclaredMethod("getCanvas");
                getCanvasMethod.setAccessible(true);
                Object gles20Canvas=getCanvasMethod.invoke(GLES20RenderLayout);
                if(null!=gles20Canvas){
                    Method getOverdrawMethod=gles20Canvas.getClass().getDeclaredMethod("getOverdraw");
                    getOverdrawMethod.setAccessible(true);
                    Object o =getOverdrawMethod.invoke(gles20Canvas);
                    if(null!=o){
                        return (float)o;
                    }
                }
            }
        }
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (NoSuchMethodException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    } catch (InvocationTargetException e) {
        e.printStackTrace();
    } catch (NoSuchFieldException e) {
        e.printStackTrace();
    }

    return 0f;

}

© 著作权归作者所有

fneg

fneg

粉丝 76
博文 43
码字总数 23812
作品 0
杭州
高级程序员
私信 提问
Android性能优化:那些不可忽略的绘制优化

前言 在 开发中,性能优化策略十分重要 本文主要讲解性能优化中的绘制优化,希望你们会喜欢。 目录 // 方式2:在 BaseActivity 的 onCreate() 方法中使用下面的代码移除 优化方案2:移除 控件...

Carson_Ho
2018/05/21
0
0
Android 界面性能调优渲染+To检测+OverDraw+Rendering

界面是 Android 应用中直接影响用户体验最关键的部分。如果代码实现得不好,界面容易发生卡顿且导致应用占用大量内存。做 ROM 的公司更不一样,预装的应用一定要非常流畅,这样给客户或用户的...

程序猿拿Q
2018/11/15
126
0
15 个必知的 Android 开发者选项

Android开发者选项,看起来很简单的事情,其实很多同学对它了解得不够,Google用心良苦得为我们设计了这么多小开关都是有它的作用的,今天也花了点时间,过了一遍全部的30多个开关,从中整理...

oschina
2015/12/11
11.5K
4
Android 性能优化之减少UI过度绘制

什么是过度绘制(OverDraw) 在多层次重叠的UI结构里面,如果不可见的UI也在做绘制的操作,会导致某些像素区域被绘制了多次。这样就会浪费大量的CPU以及GPU资源。过度绘制最直观的影响就是会...

记录自己的点点滴滴
2018/07/20
0
0
QT 使用OpenGL在OpenGL ES3.0设备上的离屏渲染问题

各位江湖豪杰,在下遇到一个问题搞了几天没解决,不知哪位仁兄是否处理过这个问题。问题如下,我使用QT-OpenGL来做离屏渲染,实质就是把内容渲染到QOpenGLFrameBufferObject上,然后通过ToI...

reme
2016/05/17
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
昨天
5
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
昨天
8
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
昨天
10
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
昨天
6
0
PHP+Ajax微信手机端九宫格抽奖实例

PHP+Ajax结合lottery.js制作的一款微信手机端九宫格抽奖实例,抽奖完成后有收货地址添加表单出现。支持可以设置中奖概率等。 奖品列表 <div class="lottery_list clearfix" id="lottery"> ......

ymkjs1990
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部