Choreographer
Skipped 37 frames! The application may be doing too much work on its main thread.
原因:----- 在主线程中操作的东西太多了,可能是刷新页面太过频繁
解决办法:(1) 添加标识,减少不必要的刷新页面;
(2) 可以用调用View的post()或者postDelayed()方法来的view显示完全后再去执行一些树新工作;
(3) 过多的调用了view.isShown()来判断该view的显示隐藏状态,isShown()其实有些鸡肋的(可以看源码←_←),自己完全可以用一个简单的boolean变量来标识view的显示和隐藏状态,而且不费性能;isShown()还有一点变态的地方就是,调用该方法可能会使view自己指向其父控件←_←;
好了,我已无力吐槽了,如果你也遇到了类似问题,希望对你能有所帮助~~
/** 是否时按下状态 **/
private boolean isDown;
/** 录音界面是否显示 **/
private boolean isTimeShown;
/** 取消录音界面是否显示 **/
private boolean isCancelShown;
// 显示正在录音页面
if(!isTimeShown){
audio_time.setVisibility(View.VISIBLE);
isTimeShown = true;
}
if(isCancelShown){
audio_cancel.setVisibility(View.GONE);
isCancelShown = false;
}
if(!isDown){
isDown = true;
audio_match.postDelayed(new Runnable() {
@Override
public void run() {
audio_match.setBackgroundColor(getResources().getColor(R.color.record_btn_bg_c));
audio_match.setTextColor(getResources().getColor(R.color.white));
}
}, 15);
}