Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java三秒倒计时_Java_Android_Countdown_Stopwatch - Fatal编程技术网

Java三秒倒计时

Java三秒倒计时,java,android,countdown,stopwatch,Java,Android,Countdown,Stopwatch,我正在开发一个非常简单的纸牌战争游戏应用程序,我想在文本视图上显示(3,2,1->WAR!)。 我尝试过这种方法: public void doCounting(){ for(int i=3;i>=0;i--) { if(i!=0){ waitTv.setText("Wait "+i); SystemClock.sleep(1000); }else{ waitTv.setText("WA

我正在开发一个非常简单的纸牌战争游戏应用程序,我想在文本视图上显示(3,2,1->WAR!)。 我尝试过这种方法:

public void doCounting(){
    for(int i=3;i>=0;i--)
    {
        if(i!=0){
        waitTv.setText("Wait "+i);
        SystemClock.sleep(1000);
        }else{
            waitTv.setText("WAR!");
        }

    }
}
它不起作用,只是让我的应用程序卡住3秒钟,然后进入活动并在文本视图中放置“WAR!”。

您可以使用以下代码:

CountDownTimer countDownTimer = new CountDownTimer(3, 1000){

        @Override
        public void onTick(long millisUntilFinished) {
            waitTv.setText("Wait " + millisUntilFinished/1000);
        }

        @Override
        public void onFinish() {
            waitTv.setText("WAR!");
        }
    }.start();

正确的方法是使用
Thread.sleep(长毫秒)
,尽管此方法可能会引发异常,因此您需要像这样将其包围在try-and-catch中

try{
    Thread.sleep(3000);
}catch(Exception e){
    e.printStackTrace();
}

已经在Stackoveflow上了

它只会让我的应用程序卡住三秒。这是正确的,因为您在UI线程上调用sleep,它也负责drawWell,您将主线程置于睡眠状态三秒钟,因此就是这样。使用AsyncTask或Runnable/Handlers.oh。。那我该怎么做呢?
import java.util.Scanner;
import java.util.Timer;
import java.util.TimerTask;

public class Stopwatch {
static int interval;
static Timer timer;

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.print("Input seconds => : ");
    String secs = sc.nextLine();
    int delay = 1000;
    int period = 1000;
    timer = new Timer();
    interval = Integer.parseInt(secs);
    System.out.println(secs);
    timer.scheduleAtFixedRate(new TimerTask() {

        public void run() {
            System.out.println(setInterval());

        }
    }, delay, period);
}

private static final int setInterval() {
    if (interval == 1)
        timer.cancel();
    return --interval;
}
}