学到了几点。
1. 开启子线程的一种方式,用Timer开启子线程。还有学到“守护线程”这个概念。
2. Looper.getMainLooper() 。即便不在activity中(context.getMainLooper()),也可以通过Looper.getMainLooper()来获取主线程中的Looper。
3. 实例化一个Handler实例的时候,不用非得实现{handleMessage()},这里主要是想在主线程中更新UI。
public class Main19Activity extends AppCompatActivity {
private Timer mTimer = new Timer("MyImageLoader", false);
private Handler mHandler = new Handler(Looper.getMainLooper());
// 即便不在一个activity中,用Looper.getMainLooper()一样可以获得主线程中的Looper
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main19);
}
public void onClick(View view) {
mTimer.schedule(new TimerTask() {
@Override
public void run() {
// ...耗时操作
mHandler.post(new Runnable() {
@Override
public void run() {
// 主线程中更新UI
}
});
}
}, 0); // delay为0,立即执行
}
}