epic缺少so库,superHandler的gradle插件在哪里看

来源:6-1 学习问题自助手册

慕莱坞7556923

2019-05-26

epic缺少so库,superHandler的gradle插件在哪里看

写回答

2回答

buder

2020-02-22

/**
     * 方案二:可以打印耗时消息以及耗时时间
     */
    private void methodTwo() {
        final long[] startTime = {0};
        //hook sendMessageAtTime,具体msg消息是谁
        DexposedBridge.findAndHookMethod(Handler.class, "sendMessageAtTime", Message.class, long.class, new XC_MethodHook() {
            @Override
            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                super.beforeHookedMethod(param);
                sMsgDetail.put((Message) param.args[0], Log.getStackTraceString(new Throwable()).replace("java.lang.Throwable", ""));
            }
 
            @Override
            protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                super.afterHookedMethod(param);
            }
        });
 
        //hook dispatchMessage,打印耗时时间
        DexposedBridge.findAndHookMethod(Handler.class, "dispatchMessage", Message.class, new XC_MethodHook() {
            @Override
            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                startTime[0] = System.currentTimeMillis();
                super.beforeHookedMethod(param);
            }
 
            @Override
            protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                super.afterHookedMethod(param);
                long costTime = System.currentTimeMillis() - startTime[0];
                String stackMessage = null;
                //时间阈值可以自己定义,这里是10
                if (costTime > 10) {
                    stackMessage = sMsgDetail.get(param.args[0]);
                    Log.i("buder", costTime + "***********");
                    Log.e("buder", stackMessage);
                }
            }
        });
    }

可以使用epic,hook住这两个方法,无需全局替换也可以的。具体见

https://blog.csdn.net/cpcpcp123/article/details/104447490

0
1
随风绽放
赞!!
2020-02-24
共1条回复

随风绽放

2019-06-27

同学你好,epic缺少so你可以设置仅使用某个类型的so,handler这个你可以参考下https://github.com/didi/DroidAssist ,这个可以实现我说的替换Handler的功能。

0
0

Top团队大牛带你玩转Android性能分析与优化

由表及里学到国内Top团队对性能问题的体系化解决方案

1696 学习 · 532 问题

查看课程