今日、ランダムなもので遊んでいるときに何か奇妙なことが起こりました。私のコードは以下のとおりです。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView textView = (TextView) findViewById(R.id.txtName);
new Thread() {
@Override
public void run() {
for(int i=0; i<100; i++){
textView.setText("Hello I am fine" +i);
textView.setTextColor(Color.RED);
// Toast.makeText(getApplicationContext(), "Hello I am fine", Toast.LENGTH_LONG).show();
}
}
}.start();
((TextView) findViewById(R.id.txtName)).setText("Hello");
}
このコードは正常に動作しますが、技術的には動作しないはずです。スレッドから UI を更新できないため、このコードが機能する理由がわかりません。このコードが機能する理由を教えてください。
しかし、スレッドで乾杯するとクラッシュし始めるので、スレッドからのテキストビューの更新が機能する理由が私の質問です。
ありがとうございました