從後臺執行緒更新 UI
通常使用後臺執行緒來執行網路操作或長時間執行的任務,然後在需要時使用結果更新 UI。
這會產生問題,因為只有主執行緒才能更新 UI。
解決方案是使用 runOnUiThread()
方法,因為它允許你從後臺執行緒啟動 UI 執行緒上的程式碼執行。
在這個簡單的示例中,在建立 Activity 時啟動 Thread,執行直到隨機生成 42
的幻數,然後在滿足此條件時使用 runOnUiThread()
方法更新 UI。
public class MainActivity extends AppCompatActivity {
TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView) findViewById(R.id.my_text_view);
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
//do stuff....
Random r = new Random();
if (r.nextInt(100) == 42) {
break;
}
}
runOnUiThread(new Runnable() {
@Override
public void run() {
mTextView.setText("Ready Player One");
}
});
}
}).start();
}
}