Android子线程真的不能刷新UI吗?(一)复现异常 onCreate()中更新UI没有抛出异常哦代码如下。public class MainActivity extends AppCompatActivity { TextView tv; Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv findViewById(R.id.tv); new Thread(new Runnable() { Override public void run() { tv.setText(zhangjin); } }).start(); } }查阅资料onCreate()执行时ViewRootImpl还没有创建。那我们在onResume()中执行总可以了吧还是没有抛出异常代码如下。public class MainActivity extends AppCompatActivity { TextView tv; Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv findViewById(R.id.tv); } Override protected void onResume() { super.onResume(); new Thread(new Runnable() { Override public void run() { tv.setText(zhangjin); } }).start(); } }参考Activity启动后View何时开始绘制onCreate中还是onResume之后可知在onResume()执行后ViewRootImpl还是没有创建。那咋办等1秒吧。代码如下。public class MainActivity extends AppCompatActivity { TextView tv; Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv findViewById(R.id.tv); new Thread(new Runnable() { Override public void run() { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } tv.setText(zhangjin); } }).start(); } }终于出现了久违的bug文字版24698-24800/com.zj.androidthreaddemo E/AndroidRuntime: FATAL EXCEPTION: Thread-3 Process: com.zj.androidthreaddemo, PID: 24698 android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:8632) at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:1380) at android.view.View.requestLayout(View.java:23377) at android.view.View.requestLayout(View.java:23377) at android.view.View.requestLayout(View.java:23377) at android.view.View.requestLayout(View.java:23377) at android.view.View.requestLayout(View.java:23377) at android.view.View.requestLayout(View.java:23377) at androidx.constraintlayout.widget.ConstraintLayout.requestLayout(ConstraintLayout.java:3239) at android.view.View.requestLayout(View.java:23377) at android.widget.TextView.checkForRelayout(TextView.java:9221) at android.widget.TextView.setText(TextView.java:5935) at android.widget.TextView.setText(TextView.java:5776) at android.widget.TextView.setText(TextView.java:5733) at com.zj.androidthreaddemo.MainActivity$1.run(MainActivity.java:23) at java.lang.Thread.run(Thread.java:784)下一篇子线程更新主线程的View抛出异常全过程