java - 显示新屏幕需要太多时间! (线程也许...?)

标签 java android multithreading performance android-intent

TL;DR:我的 Intent 从不同线程启动需要太多时间,而从主线程启动速度非常快。我实际上不知道这是线程问题还是 onFinish 问题方法

所以,我有一个倒计时器。从二十秒开始倒计时,onFinish()我有一个 Intent 。我还定期根据 millisUntilFinished 设置我的 textView 的文本。 我注意到,在 textView 之后显示 1 second left , Intent 在 3 秒后开始。

但是,如果我使用 onFinish 外部的 Intent 来切换 Activity 方法下一个 Activity 很快开始。所以,

为什么从onFinish开始一个 Intent 方法需要比平时更长的时间?

根据我对计时器的小测试,我决定需要一种更好、更快的方式来启动我的 Intent ,因为显然,onFinish 方法在计时器实际启动的时间更长后启动。那么,我应该怎样做才能更快地开始我的 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");
                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);
}

关于java - 显示新屏幕需要太多时间! (线程也许...?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34289105/

相关文章:

Java - 多个类加载器的单例使用

java:通过多个线程向 map 添加值(可能吗?)

C# 并发列表访问

ios - 如何处理iOS中的多个API调用?

java - 使用 CSS 在 JavaFX 中设置 RadioButton 子元素的样式

java - 如何使用spring boot连接oracle数据库

java - Android Fragment中如何中断线程?

android - 从给定的 URL 下载 gif

android - AsyncTask 适用于 Android 2.3.3 但不适用于 ICS

android - 获取错误的 id onItemClick