java - 在移动到下一个方法之前等待内联线程完成

标签 java android multithreading

我有一个 android 应用程序,我正在执行以下操作:

private void onCreate() {
    final ProgressDialog dialog = ProgressDialog.show(this, "Please wait..", "Doing stuff..", true);

    new Thread() {
        public void run() {
            //do some serious stuff...
            dialog.dismiss();           
        }
    }.start(); 

    stepTwo();
}

而且我想确保我的线程在 stepTwo() 之前完成;叫做。我该怎么做?

谢谢!

最佳答案

Thread 实例有一个 join 方法,所以:

private void onCreate() {
    final ProgressDialog dialog = ProgressDialog.show(this, "Please wait..", "Doing stuff..", true);

    Thread t = new Thread() {
        public void run() {
            //do some serious stuff...
            dialog.dismiss();           
        }
    };
    t.start(); 
    t.join();
    stepTwo();

}

不过你可能想试试这个:

private void onCreate() {
    final ProgressDialog dialog = ProgressDialog.show(this, "Please wait..", "Doing stuff..", true);

    Thread t = new Thread() {
        public void run() {
            //do some serious stuff...
            SwingUtilities,invokeLater(new Runnable() {
                public void run() {
                    dialog.dismiss();           
                }
            });
            stepTwo();
        }
    };
    t.start(); 
}

因为 onCreate 在 UI 线程中,在那里加入将卡住 UI 直到 onCreate 完成后,保存所有对话框直到那时。 stepTwo 必须使用 SwingUtilities.invokeLater 自行更改任何 UI。

关于java - 在移动到下一个方法之前等待内联线程完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2861109/

相关文章:

java - Ant:回显文件内容以使用 Get 任务进行控制台?

android - 如何重现或解决 KeyStoreException?

java - 从不同线程收集数据

java - 应用程序类是在 UI 线程上运行还是?

java - 部分匹配长度的正则表达式 - 字符串相似度

java - java代码中如何调用Tomcat的startup.bat

java - 如何为 Servlet 3.0 配置 Spring Boot 1.2.0 并让 m2e 将 Eclipse Facet 设置为 3.0?

android - 如何将Soundmanager播放音量设置为铃声音量?

android - 使用后退按钮作为 react native android 应用程序的背景

c# - 在 C# 中使用线程构建分布式 DFS