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();
}
}
}
复制代码