线程实际上并没有工作

时间:2013-07-10 00:09:29

标签: android

我是Java和Android的noobie我有一个Thread问题: 我有以下代码由android:onClick在xml布局上触发 由此产生的行为是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();
}

1 个答案:

答案 0 :(得分:4)

替换

readingGps.run();

readingGps.start();

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

这是Android中的一种常见模式,SDK提供了一些帮助类:请务必查看AsyncTaskAsyncTaskLoader