0

我是 Java 和 Android 的菜鸟 我有一个线程问题:我有以下代码从 xml 布局上的 android:onClick 触发 结果行为是 UI 等待 5 秒,只有在这 5 秒之后,ProgressDialog开始。线程不应该独立启动并立即弹出对话框吗?为什么线程停止程序的过程?谢谢!

// (Button)
public void buttonReadGps(View v){

    Thread readingGps = new Thread(){
        public void run() {
            // Read GPS code will go here
            try {
                sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    };
    readingGps.run();

    // Create a wait dialog
    prgDialg = new ProgressDialog(context);
    prgDialg.setTitle("Reading GPS...");
    prgDialg.setMessage("Please wait.");
    prgDialg.setCancelable(true);
    prgDialg.setIndeterminate(true);
    prgDialg.show();
}
4

1 回答 1

4

代替

readingGps.run();

readingGps.start();

问题是第一个版本只会同步运行您的方法并阻塞主线程。第二个版本实际上启动了一个线程并继续,因此该方法将在一个新线程上异步运行。

这是 Android 中的一种常见模式,SDK 提供了一些类来提供帮助:请务必查看AsyncTask和可能的AsyncTaskLoader

于 2013-07-10T00:11:46.350 回答