如何在倒计时期间执行功能?
How can I execute a function during the count-down timer?
我想收集一段时间内的一些实时值,然后据此进行处理。下面是javaandroid工作室的代码。但是,我找不到任何方法在飞镖倒计时期间执行功能。
timer = new CountDownTimer(30000, 1000) {
public void onTick(long millisUntilFinished) {
sum = Math.round(Math.sqrt(Math.pow(event.values[0], 2)
+ Math.pow(event.values[1], 2)
+ Math.pow(event.values[2], 2)));
repeat_count++;
Log.e("Check sum", String.valueOf(sum));
if ((sum >= 9.80) && (sum <= 11.0)) {
count++;
}
}
public void onFinish() {
String c = String.valueOf(count);
String rep=String.valueOf(repeat_count);
Log.e("Count is", c);
Log.e("Loop count",rep);
Intent intent=new Intent();
intent.putExtra("count_value",count);
setResult(2, intent);
finish();
}
}.start();
请帮忙
I cannot find any way to execute a function during the count-down timer in dart.
你问的不是很清楚。 Dart 没有 CountDownTimer
class 如果这就是你的意思,但你可以自己实现一个而不会有太多麻烦。您通常只需要使用 Timer.periodic
定期调用回调,然后在足够的总时间过去后取消 Timer
。
与 Android 版本更相似的实现:
import 'dart:async';
class CountDownTimer {
final Duration total;
final Duration interval;
final void Function(Duration) onTick;
final void Function() onFinish;
Timer? _periodicTimer;
Timer? _completionTimer;
CountDownTimer({
required this.total,
required this.interval,
required this.onTick,
required this.onFinish,
});
void start() {
var endTime = DateTime.now().add(total);
_periodicTimer = Timer.periodic(interval, (_) {
var timeLeft = endTime.difference(DateTime.now());
onTick(timeLeft);
});
_completionTimer = Timer(total, () {
_periodicTimer!.cancel();
onFinish();
});
}
void cancel() {
_periodicTimer?.cancel();
_completionTimer?.cancel();
}
}
void main() {
var countDownTimer = CountDownTimer(
total: const Duration(seconds: 30),
interval: const Duration(seconds: 1),
onTick: (timeLeft) {
print(timeLeft);
},
onFinish: () {
print('Done');
},
);
countDownTimer.start();
}
与 Android 版本的显着差异:
- 使用
Duration
而不是表示毫秒的整数。
- 采用
onTick
和 onFinish
回调,而不是期望您使用覆盖扩展 class。
onTick
初始调用和最终调用的行为可能略有不同。 documentation for the Android version 没有解释该行为应该是什么,所以我选择了我个人认为合理的行为。
编辑:通过维护两个单独的 Timer
对象更新了更简单的实现。
我想收集一段时间内的一些实时值,然后据此进行处理。下面是javaandroid工作室的代码。但是,我找不到任何方法在飞镖倒计时期间执行功能。
timer = new CountDownTimer(30000, 1000) {
public void onTick(long millisUntilFinished) {
sum = Math.round(Math.sqrt(Math.pow(event.values[0], 2)
+ Math.pow(event.values[1], 2)
+ Math.pow(event.values[2], 2)));
repeat_count++;
Log.e("Check sum", String.valueOf(sum));
if ((sum >= 9.80) && (sum <= 11.0)) {
count++;
}
}
public void onFinish() {
String c = String.valueOf(count);
String rep=String.valueOf(repeat_count);
Log.e("Count is", c);
Log.e("Loop count",rep);
Intent intent=new Intent();
intent.putExtra("count_value",count);
setResult(2, intent);
finish();
}
}.start();
请帮忙
I cannot find any way to execute a function during the count-down timer in dart.
你问的不是很清楚。 Dart 没有 CountDownTimer
class 如果这就是你的意思,但你可以自己实现一个而不会有太多麻烦。您通常只需要使用 Timer.periodic
定期调用回调,然后在足够的总时间过去后取消 Timer
。
与 Android 版本更相似的实现:
import 'dart:async';
class CountDownTimer {
final Duration total;
final Duration interval;
final void Function(Duration) onTick;
final void Function() onFinish;
Timer? _periodicTimer;
Timer? _completionTimer;
CountDownTimer({
required this.total,
required this.interval,
required this.onTick,
required this.onFinish,
});
void start() {
var endTime = DateTime.now().add(total);
_periodicTimer = Timer.periodic(interval, (_) {
var timeLeft = endTime.difference(DateTime.now());
onTick(timeLeft);
});
_completionTimer = Timer(total, () {
_periodicTimer!.cancel();
onFinish();
});
}
void cancel() {
_periodicTimer?.cancel();
_completionTimer?.cancel();
}
}
void main() {
var countDownTimer = CountDownTimer(
total: const Duration(seconds: 30),
interval: const Duration(seconds: 1),
onTick: (timeLeft) {
print(timeLeft);
},
onFinish: () {
print('Done');
},
);
countDownTimer.start();
}
与 Android 版本的显着差异:
- 使用
Duration
而不是表示毫秒的整数。 - 采用
onTick
和onFinish
回调,而不是期望您使用覆盖扩展 class。 onTick
初始调用和最终调用的行为可能略有不同。 documentation for the Android version 没有解释该行为应该是什么,所以我选择了我个人认为合理的行为。
编辑:通过维护两个单独的 Timer
对象更新了更简单的实现。