BlockCanary

   BlockCanary:Android平台上的一个轻量的,非侵入式的性能监控组件

  github:https://github.com/moduth/blockcanary

  原理,Looper类中有个方法,循环处理消息

public static void loop() {
    ...

    for (;;) {
        ...

        // This must be in a local variable, in case a UI event sets the logger
        Printer logging = me.mLogging;
        if (logging != null) {
            logging.println(">>>>> Dispatching to " + msg.target + " " +
                    msg.callback + ": " + msg.what);
        }

        msg.target.dispatchMessage(msg);

        if (logging != null) {
            logging.println("<<<<< Finished to " + msg.target + " " + msg.callback);
        }

        ...
    }
}
可以看到前面都会用一个printer来打印输出,并且支持自己替换一个这个类,所以就自己写了一个类,继承Printer
在应用启动的时候,重新设置一个printer,并且同时使用2个HandlerThread开始记录信息。
记录了2大类信息,一种是主线程中的
getStackTrace,得到启发,主线程执行步骤可以通过这个方法获取
另外一种是cpu信息,因为android内核是linux的,所以直接访问了/proc/stat文件,获得整个cpu情况,得到启发,cpu信息可以通过这种方式获取
同时还使用了访问
"/proc/" + this.mPid + "/stat",获取当前应用的进程占用情况
posted @ 2016-02-05 17:36  saki_god  阅读(783)  评论(0编辑  收藏  举报