Android 中的 Chronometer 支持库
Support Library for Chronometer in Android
是否有任何支持库函数可以使API支持的计时器的setCountDown
功能低于24?
根据 Android 文档,低于 API 级别 24 是不可能的。Chronometer widget only use count up. If you need to do so go with CountDownTimer.
例如:
final int oneSecond = 1000; // in milliSeconds i.e. 1 second
final int tenSeconds = 100000; // 100 seconds
CountDownTimer cTimer = new CountDownTimer(100000, oneSecond) {
public void onTick(long millisUntilFinished) {
int totalTime = 60000; // in milliseconds i.e. 60 seconds
String v = String.format("%02d", millisUntilFinished/totalTime);
int va = (int)( (millisUntilFinished%totalTime)/oneSecond);
textView.setText("remaining seconds: " +v+":"+String.format("%02d",va));
}
public void onFinish() {
textView.setText("done!");
}
};
cTimer.start();
编辑:
您可以尝试 RXJava 来简单处理线程、计时器和许多其他功能。
定时器运算符的文档是这样说的:
Create an Observable that emits a particular item after a given delay
因此您观察到的行为是预期的 - timer() 在延迟后仅发出一个项目。
另一方面,间隔运算符将发出以给定间隔隔开的项目。
例如,这个 Observable 将每秒发出一个项目:
Observable.interval(1, TimeUnit.SECONDS);
还有一个完整的例子:
Observable.interval(1,TimeUnit.SECONDS, Schedulers.io())
.take(300) // take 300 second
.map(v -> 300 - v)
.subscribe(
onNext -> {
//on every second pass trigger
},
onError -> {
//do on error
},
() -> {
//do on complete
},
onSubscribe -> {
//do once on subscription
});
是否有任何支持库函数可以使API支持的计时器的setCountDown
功能低于24?
根据 Android 文档,低于 API 级别 24 是不可能的。Chronometer widget only use count up. If you need to do so go with CountDownTimer.
例如:
final int oneSecond = 1000; // in milliSeconds i.e. 1 second
final int tenSeconds = 100000; // 100 seconds
CountDownTimer cTimer = new CountDownTimer(100000, oneSecond) {
public void onTick(long millisUntilFinished) {
int totalTime = 60000; // in milliseconds i.e. 60 seconds
String v = String.format("%02d", millisUntilFinished/totalTime);
int va = (int)( (millisUntilFinished%totalTime)/oneSecond);
textView.setText("remaining seconds: " +v+":"+String.format("%02d",va));
}
public void onFinish() {
textView.setText("done!");
}
};
cTimer.start();
编辑:
您可以尝试 RXJava 来简单处理线程、计时器和许多其他功能。
定时器运算符的文档是这样说的:
Create an Observable that emits a particular item after a given delay
因此您观察到的行为是预期的 - timer() 在延迟后仅发出一个项目。
另一方面,间隔运算符将发出以给定间隔隔开的项目。
例如,这个 Observable 将每秒发出一个项目:
Observable.interval(1, TimeUnit.SECONDS);
还有一个完整的例子:
Observable.interval(1,TimeUnit.SECONDS, Schedulers.io())
.take(300) // take 300 second
.map(v -> 300 - v)
.subscribe(
onNext -> {
//on every second pass trigger
},
onError -> {
//do on error
},
() -> {
//do on complete
},
onSubscribe -> {
//do once on subscription
});