为什么可以在子线程通过setText进行更新UI
void checkThread() {
if (mThread != Thread.currentThread()) {
throw new CalledFromWrongThreadException(
"Only the original thread that created a view hierarchy can touch its views.");
}
}
一般情况下在子线程更新UI是会报错的,因为在ViewRootImpl中会通过checkThread进行检查,在ViewRootImpl还没创建的时候是不会检查的,但这里主要是对已经创建ViewRootImpl还可以更新UI进行分析。
我们直接看下通过子线程setText不会报错的代码和运行结果。
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
TextView text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text= findViewById(R.id.text);
}
@Override
public void onClick(View v) {
new Thread((Runnable