我是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();
}
答案 0 :(得分:4)
替换
readingGps.run();
与
readingGps.start();
问题是第一个版本将同步运行您的方法并阻止主线程。第二个版本实际上启动一个线程并继续,因此该方法将在一个新线程上异步运行。
这是Android中的一种常见模式,SDK提供了一些帮助类:请务必查看AsyncTask和AsyncTaskLoader。