Ui线程 可以直接在主线程或者子线程使用,内部会判断
this.runOnUiThread(new Runnable() {
@Override
public void run() {
//更新Ui 内部handler.post()实现
}
});
子线程
new Thread(new Runnable() {
@Override
public void run() {
//处理耗时操作,然后利用handler 跟主线程交互
handler.sendMessage(new Message());
}
}).start();
结合使用
new Thread(new Runnable() {
@Override
public void run() {
//处理耗时操作,
//下载或者请求
runOnUiThread(new Runnable() {
@Override
public void run() {
//直接在子线程中调用Ui线程更新Ui
}
});
}
}).start();
View 更新Ui
view.postDelayed(new Runnable() {
@Override
public void run() {
//任务能够保证在所有 View 绘制流程结束之后被调用,故如果需要依赖 View 绘制任务,此时可以优先考虑使用该机制。
//延时处理,用来弹出软件盘或者设置动画效果防止动画还没有结束控件就隐藏
//更新Ui
}
}, 500);
网友评论