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",获取当前应用的进程占用情况

你可能感兴趣的:(BlockCanary)