面试:子线程一定不能更新UI?这种说法显然是不严谨的。
SurfaceView :多媒体视频播放 ,可以在子线程中更新UI; Progress(进度)相关的控件:也是可以在子线程中更新Ui;审计机制:activity完全显示的时候审计机制才会去检测子线程有没有更新Ui。
在主线程更新UI的方法:
1.使用activity的runOnUiThread方法更新ui,无论当前线程是否是主线程,都将在主线程执行runOnUiThread(new Runnable() {
@Override
public void run() {
textView.setText("我被更新了");
}
});
2.使用handler直接post到主线程(handler需要在主线程创建)
//延迟3秒执行runnable
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
Intent intent= new Intent(OneActivity.this,TwoActivity.class);
startActivity(intent);
}
}, 1000*3);
应用场景:延时启动,广告展示后,做页面跳转。