您的位置:首页 > 移动开发

The application may be doing too much work on its main thread.问题可能的解决办法

2014-03-18 17:58 721 查看
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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐