总结一下Android中几种常用的更新UI的方法:
1.用handler的post方法更新UI
2.在handleMessage()方法中更新UI
3.用runOnUiThread()方法更新UI
4.用view的post方法更新UI
用一个TextView作为实例,通过依次调用不同的方法来更新TextView的显示内容。
public class MainActivity extends AppCompatActivity {
private TextView textView;
/**
* 1.用handler的post方法更新UI
*/
private void handler1(){
handler.post(new Runnable() {
@Override
public void run() {
textView.setText("textView updates the first time!");
}
});
}
/**
* 2.在handleMessage()方法中更新UI
*/
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
textView.setText("textView updates the second time!");
}
};
private void handler2(){
handler.sendEmptyMessage(1);
}
/**
* 3.用runOnUiThread()方法更新UI
*/
private void upDateUIOnUiThread(){
runOnUiThread(new Runnable() {
@Override
public void run() {
textView.setText("textView updates the third time!");
}
});
}
/**
* 4.用view的post方法更新UI
*/
private void viewUpDateUI(){
textView.post(new Runnable() {
@Override
public void run() {
textView.setText("textView updates the fourth time!");
}
});
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView= (TextView) findViewById(R.id.textView);
/**
* 创建子线程,依次调用不同方法更新UI
*/
new Thread(){
@Override
public void run() {
try {
Thread.sleep(3000);
handler1();
Thread.sleep(3000);
handler2();
Thread.sleep(3000);
upDateUIOnUiThread();
Thread.sleep(3000);
viewUpDateUI();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
}
}