非UI线程能够直接更新ui吗?
直接上代码:
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=(Button)this.findViewById(R.id.button);
thread.start();
}
Thread thread=new Thread(new Runnable() {
@Override
public void run() {
button.setVisibility(View.GONE);
}
});
直接运行,肯定不会报错。
所以对于“非UI线程不能直接更新UI”这句话,我们应该有更全面的理解:从纯理论层面分析,当线程内事件执行时间很短,不会造成UI线程阻塞的情况下,非UI线程是可以更新UI的。