TL; DR:我的意图是花太多时间从另一个线程开始,而从主线程开始非常快。我实际上不知道这是线程还是onFinish方法的问题

因此,我有一个倒数计时器。它从二十秒开始倒数,而onFinish()我有一个意图。我还定期根据millisUntilFinished设置textView的文本。我注意到,在textView说1 second left之后,意图在3秒钟后开始。

但是,如果我通过使用onFinish方法的OUTSIDE的意图来切换活动,则下一个活动将快速启动。所以,

为什么从onFinish方法启动意图需要比平时更长的时间?

根据对计时器的小测试,我决定我需要一种更好,更快的方法来启动我的意图,因为显然,onFinish方法会在更多时间之后启动,然后计时器才真正启动。那么,我应该怎么做才能更快地开始我的意图?我需要立即采取行动...

 public void startTimer() {

        timer = new CountDownTimer(20000, 1000) {

            public void onTick(long millisUntilFinished) {

                int seconds = (int) millisUntilFinished/1000;

                timetext.setText(seconds + ":00");

            }

            public void onFinish() {



                Intent intent = new Intent(MainActivity.this, GameOver.class);
                intent.putExtra("score", score);  // pass your values and retrieve them in the other Activity using keyName
                intent.putExtra("classname", "com.example.ruchir.swapproperties.MainActivity");
                startActivity(intent);

            }
        }.start();

    }


谢谢,

鲁奇尔

最佳答案

尝试将startActivity(intent)放置在计时器外部,如下所示:

    public void startTimer() {

    timer = new CountDownTimer(20000, 1000) {

        public void onTick(long millisUntilFinished) {

            int seconds = (int) millisUntilFinished/1000;

            timetext.setText(seconds + ":00");

        }

        public void onFinish() {



            Intent intent = new Intent(MainActivity.this, GameOver.class);
            intent.putExtra("score", score);  // pass your values and retrieve them in the other Activity using keyName
            intent.putExtra("classname", "com.example.ruchir.swapproperties.MainActivity");


        }
    }.start();

    startActivity(intent);
}

10-08 07:22