我们有时候需要我们的某个函数,或者是界面的跳转;在延时 几秒之后再执行这个函数或者是界面的startActivity();这时候我们就需要做下延时处理以让用户看到某个操作效果,或者是隐含的操作!
实现的方式有以下几种:
第一种:
/**
* Thread.sleep(long )
*/
public void threadDelay() {
Thread thread = new Thread(runnable);
thread.start();
}
第二种方式:
handler.postDelayed(runnable, 2500);
第三种方式:
TimerTask task = new TimerTask() {
@Override
public void run() {
//TODO: execute Task
handler.obtainMessage(UPDATE_DATA, "更新").sendToTarget();
}
};
Timer timer = new Timer();
timer.schedule(task, 2500);
Runnable 接口:
Runnable runnable = new Runnable() {
@Override
public void run() {
//TODO: execute Task(借助Handler 发送一条消息到MainThread)
try {
Thread.sleep(2500);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 发送一条消息到 MainThread 更新UI
handler.obtainMessage(UPDATE_DATA, "更新").sendToTarget();
}
};
Handler:
private static class MyHandler extends Handler {
private final WeakReference<MainActivity> mActivity;
public MyHandler(MainActivity activity) {
mActivity = new WeakReference<MainActivity>(activity);
}
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
MainActivity activity = mActivity.get();
if (activity != null) {
if (msg.what == UPDATE_DATA) {
tv_info.setText((String) msg.obj);
}
}
}
};
以上方式即可做到在 2500ms之后执行某个Task!