根本无法 运行 倒计时
can not run countdowntimer at all
我遇到倒计时问题 timer.I 尝试了该站点中的一些解决方案和文章,但它们对我没有用。所以,请阅读我的代码...
我也用过
handler.postDelayed(new Runnable() {
以前,这不是我的解决方案,但它工作正常。
主要问题是:
我想做如下的事情:
(button pressed)
do some codes1
delay1
do other codes2
delay2
go back to *do some codes1* again.
简而言之,这是我的真实代码:
itimesec--;
setdelay();
irepeat--;
setrelax();
这是我的职能:
public void setrelax(){
CountDownTimer yourCountDownTimer1 = new CountDownTimer(50000, 1000) {
public void onTick(long millisUntilFinished1) {
itotalsnozee--;
TextToSpeechFunction(" "+itotalsnozee);
}
public void onFinish() {
itotalsnozee=fitotalsnozee;
isrelax=false;
TextToSpeechFunction("do again");
}
}.start();
yourCountDownTimer1.cancel();
}
我尝试使用一个变量 insted 50000,但无论如何它都没有用。
我试图将 setrelax 函数代码直接放入 oncreate 中,但没有成功。
它刚刚跳到
}.start();
yourCountDownTimer1.cancel();
每次都出去
所有没有延迟功能的代码我都试过了,都运行正常。
请问我哪里错了...
我查看了您的代码,但没有发现任何重大错误,但请改用此方法
而不是
.start();
使用
yourCountDownTimer1.start();
并删除 yourCountTimer1.cancel();
像这样:
public void setrelax(){
CountDownTimer yourCountDownTimer1 = new CountDownTimer(50000, 1000) {
public void onTick(long millisUntilFinished1) {
itotalsnozee--;
TextToSpeechFunction(" "+itotalsnozee);
}
public void onFinish() {
itotalsnozee=fitotalsnozee;
isrelax=false;
TextToSpeechFunction("do again");
}
};yourCountDownTimer1.start();
}
希望对您有所帮助。
下面是我们 code.you 中 运行 otp 定时器的代码 可以复制粘贴 我已经提到评论请遵循相同的。
CountDownTimer countDownTimer; //define countDownTimer
countDownTimer.start(); // start countdown timer on some event like on click
String x="Your code will expire In";
String y="mins";
counttimer(); call the method counttimer which includes all the code of timer
public void counttimer(){
countDownTimer = new CountDownTimer(30000, 1000) {
public void onTick(long millisUntilFinished) {
String text = String.format(Locale.getDefault(), x+" %02d : %02d "+y,
TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) % 60,
TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) % 60);
phonever_timer.setText(text); //set timer into textview object
}
public void onFinish() {
phonever_timer.setText("Otp Expired..!");
}
};
您需要记住,使用 CountDownTimer
时您的代码不会按顺序执行,因为它是异步工作的(通过 Handler)。
让我们剖析您的代码。您在此处的以下代码:
public void setrelax(){
// 1. Creating CountDownTimer
CountDownTimer yourCountDownTimer1 = new CountDownTimer(50000, 1000) {
public void onTick(long millisUntilFinished1) {
// 2. onTick called
...
}
public void onFinish() {
// 3. onFinish called
...
}
}.start();
// 4. CountDownTimer is cancelled.
yourCountDownTimer1.cancel();
}
将是 运行 以下序列:
- 正在创建 CountDownTimer
- CountDownTimer 已取消。
- onTick 重复调用了 49 次 (50000/1000 = 50 - 1 )。
- onFinish 调用
因此,将您的算法更改为如下内容:
do some codes1
delay1
--> When delay finished, do other codes2. Then do delay2
您需要调用 CountDownTimer.onFinish()
中的下一个代码
我遇到倒计时问题 timer.I 尝试了该站点中的一些解决方案和文章,但它们对我没有用。所以,请阅读我的代码...
我也用过
handler.postDelayed(new Runnable() {
以前,这不是我的解决方案,但它工作正常。
主要问题是:
我想做如下的事情:
(button pressed)
do some codes1
delay1
do other codes2
delay2
go back to *do some codes1* again.
简而言之,这是我的真实代码:
itimesec--;
setdelay();
irepeat--;
setrelax();
这是我的职能:
public void setrelax(){
CountDownTimer yourCountDownTimer1 = new CountDownTimer(50000, 1000) {
public void onTick(long millisUntilFinished1) {
itotalsnozee--;
TextToSpeechFunction(" "+itotalsnozee);
}
public void onFinish() {
itotalsnozee=fitotalsnozee;
isrelax=false;
TextToSpeechFunction("do again");
}
}.start();
yourCountDownTimer1.cancel();
}
我尝试使用一个变量 insted 50000,但无论如何它都没有用。
我试图将 setrelax 函数代码直接放入 oncreate 中,但没有成功。 它刚刚跳到
}.start();
yourCountDownTimer1.cancel();
每次都出去
所有没有延迟功能的代码我都试过了,都运行正常。
请问我哪里错了...
我查看了您的代码,但没有发现任何重大错误,但请改用此方法
而不是
.start();
使用
yourCountDownTimer1.start();
并删除 yourCountTimer1.cancel(); 像这样:
public void setrelax(){
CountDownTimer yourCountDownTimer1 = new CountDownTimer(50000, 1000) {
public void onTick(long millisUntilFinished1) {
itotalsnozee--;
TextToSpeechFunction(" "+itotalsnozee);
}
public void onFinish() {
itotalsnozee=fitotalsnozee;
isrelax=false;
TextToSpeechFunction("do again");
}
};yourCountDownTimer1.start();
}
希望对您有所帮助。
下面是我们 code.you 中 运行 otp 定时器的代码 可以复制粘贴 我已经提到评论请遵循相同的。
CountDownTimer countDownTimer; //define countDownTimer
countDownTimer.start(); // start countdown timer on some event like on click
String x="Your code will expire In";
String y="mins";
counttimer(); call the method counttimer which includes all the code of timer
public void counttimer(){
countDownTimer = new CountDownTimer(30000, 1000) {
public void onTick(long millisUntilFinished) {
String text = String.format(Locale.getDefault(), x+" %02d : %02d "+y,
TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) % 60,
TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) % 60);
phonever_timer.setText(text); //set timer into textview object
}
public void onFinish() {
phonever_timer.setText("Otp Expired..!");
}
};
您需要记住,使用 CountDownTimer
时您的代码不会按顺序执行,因为它是异步工作的(通过 Handler)。
让我们剖析您的代码。您在此处的以下代码:
public void setrelax(){
// 1. Creating CountDownTimer
CountDownTimer yourCountDownTimer1 = new CountDownTimer(50000, 1000) {
public void onTick(long millisUntilFinished1) {
// 2. onTick called
...
}
public void onFinish() {
// 3. onFinish called
...
}
}.start();
// 4. CountDownTimer is cancelled.
yourCountDownTimer1.cancel();
}
将是 运行 以下序列:
- 正在创建 CountDownTimer
- CountDownTimer 已取消。
- onTick 重复调用了 49 次 (50000/1000 = 50 - 1 )。
- onFinish 调用
因此,将您的算法更改为如下内容:
do some codes1
delay1
--> When delay finished, do other codes2. Then do delay2
您需要调用 CountDownTimer.onFinish()