3种计时器实现方法

Tags
目标:每隔一秒,发送一个事件

1.Timer

    @Override
    public void onDestroy() {
        LogUtil.print("");
        timer.cancel();
        super.onDestroy();
    }

    /**
     * 初始化
     */
    private void init() {
        timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                //发送事件:Thread=Timer-0
                sendUpdateTimeEvent();
            }
        }, 1000, 1000);
    }

2.RxJava

    @Override
    public void onDestroy() {
        LogUtil.print("");
        subscription.unsubscribe();
        super.onDestroy();
    }

    /**
     * 初始化
     */
    private void init() {
        subscription = Observable.interval(1000, 1000, TimeUnit.MILLISECONDS)
                .subscribe(time -> {
                    //发送事件:Thread=RxComputationScheduler-1
                    sendUpdateTimeEvent();
                });
    }

3.Handler

    @Override
    public void onDestroy() {
        LogUtil.print("");
        handler.removeCallbacks(runnable);
        super.onDestroy();
    }

    Handler handler = new Handler();

    Runnable runnable = new Runnable() {
        @Override
        public void run() {
            //发送事件:Thread=main
            sendUpdateTimeEvent();
            handler.postDelayed(this, 1000);
        }

    };

    /**
     * 初始化
     */
    private void init() {
        runnable.run();
    }

© fishyer 2022 - 2023