Android 延时执行某个任务

我们有时候需要我们的某个函数,或者是界面的跳转;在延时 几秒之后再执行这个函数或者是界面的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!

猜你喜欢

转载自blog.csdn.net/wlytctw/article/details/52702407