Android 计时器使用总结

1.Handler方式实现(显示当前北京时间):

public class HandlerTimeActivity extends BaseActivity {

    @BindView(R.id.button)
    Button button;
    @BindView(R.id.button1)
    Button button1;
    @BindView(R.id.textView)
    TextView textView;
    SimpleDateFormat simpleDateFormat;
    private TimeHandler handler;

    @Override
    protected int getLayoutId() {
        return R.layout.activity_handler_time;
    }

    @Override
    protected void initView(@Nullable Bundle savedInstanceState) {
       simpleDateFormat = new SimpleDateFormat("HH:mm:ss");
        simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        handler = new TimeHandler();

        button.setOnClickListener(v -> {
            button.setClickable(false);
            handler.sendEmptyMessage(0);
        });
        button1.setOnClickListener(v->{
            handler.removeMessages(0);
           button.setClickable(true);
        });
    }

    private class TimeHandler extends Handler {
        @Override
        public void dispatchMessage(Message msg) {
            super.dispatchMessage(msg);
            updateTime();
            sendEmptyMessageDelayed(0, 1000);
        }
    }

    private void updateTime() {
        Log.e("WFQ", "当前时间是:" + simpleDateFormat.format(new Date()));
        textView.setText("当前时间是:" + simpleDateFormat.format(new Date()));
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (null != handler) {
            handler.removeMessages(0);
        }
    }
}
复制代码

2.Rxjava方式实现(60s倒计时):

public class HandlerTimeActivity extends BaseActivity {

    @BindView(R.id.button)
    Button button;
    @BindView(R.id.button1)
    Button button1;
    @BindView(R.id.textView)
    TextView textView;

    CompositeDisposable compositeDisposable = new CompositeDisposable();
    DisposableObserver disposableObserver;

    @Override
    protected int getLayoutId() {
        return R.layout.activity_handler_time;
    }

    @Override
    protected void initView(@Nullable Bundle savedInstanceState) {
        int count_time = 60;
        button.setOnClickListener(v -> {
             disposableObserver = Observable.interval(1, TimeUnit.SECONDS)
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .take(count_time + 1)
                    .map(aLong -> count_time - aLong)
                    .doOnSubscribe(disposable -> button.setClickable(false))
                    .subscribeWith(new DisposableObserver<Long>() {

                        @Override
                        public void onNext(Long aLong) {
                            textView.setText(aLong + "S");
                        }

                        @Override
                        public void onError(Throwable e) {

                        }

                        @Override
                        public void onComplete() {
                            button.setClickable(true);
                        }
                    });
            compositeDisposable.add(disposableObserver);
        });


    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if(null != compositeDisposable){
            compositeDisposable.dispose();
        }
    }
}
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值