开发Android程序时经常会用到后台线程请求服务器数据,当请求完数据后更新UI时,经常遇到回调函数中和UI相关的语句无法执行,甚至有时候会抛异常。
下面的例子我会讲到三种方法更新UI,例子非常简单,一个Activity和一个后台线程,在Activity中启动后台线程并把自己作为参数传给后台线程,后台线程每隔4秒调用Activity的showToast()方法一次,在showToast()方法中显示Toast。
MainActivity.java
package com.windanran.testtoast;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.os.Process;
import android.widget.Toast;
import android.annotation.SuppressLint;
import android.app.Activity;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new MyThread(this).start();
}
/*****************************方法一**********************************/
@SuppressLint("HandlerLeak")
/*private Handler handl