private MyFrameCallback mFrameCallback = new MyFrameCallback();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Choreographer.getInstance().postFrameCallback(mFrameCallback);
setContentView(R.layout.activity_main);
ARouter.getInstance().inject(this);
// String serverURL = BuildConfig.debug;
//
// Log.d(TAG,"server url" + serverURL);
//
// if (BuildConfig.isRelease) {
// Log.d(TAG, "当前是: 集成化 线上环境");
// } else {
// Log.d(TAG, "当前是 组件化测试环境");
// }
findViewById(R.id.text_login).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// ARouter.getInstance().build("/login/Login_MainActivity")
// .withString("name","wangjiahao").navigation();
uiLongTimeWork();
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
ARouter.getInstance().destroy();
}
public class MyFrameCallback implements Choreographer.FrameCallback {
private String TAG = "性能检测";
private long lastTime = 0;
@Override
public void doFrame(long frameTimeNanos) {
if (lastTime == 0) {
//代码第一次初始化。不做检测统计。
lastTime = frameTimeNanos;
} else {
long times = (frameTimeNanos - lastTime) / 1000000;
int frames = (int) (times / 16);
if (times > 16) {
Log.w(TAG, "UI线程超时(超过16ms):" + times + "ms" + " , 丢帧:" + frames);
}
lastTime = frameTimeNanos;
}
Choreographer.getInstance().postFrameCallback(mFrameCallback);
}
}
注册FrameCallback来查看掉帧率