28
จะจัดการกับการเปลี่ยนแปลงการวางแนวหน้าจอเมื่อไดอะล็อกความคืบหน้าและเธรดพื้นหลังทำงานอย่างไร
โปรแกรมของฉันทำกิจกรรมเครือข่ายบางอย่างในเธรดพื้นหลัง ก่อนที่จะเริ่มต้นจะปรากฏขึ้นในกล่องโต้ตอบความคืบหน้า ไดอะล็อกถูกยกเลิกบนตัวจัดการ ทั้งหมดนี้ทำงานได้ดียกเว้นเมื่อการวางแนวหน้าจอเปลี่ยนไปในขณะที่กล่องโต้ตอบทำงาน (และเธรดพื้นหลังจะทำงาน) ณ จุดนี้แอพขัดข้องหรือ deadlocks หรือเข้าสู่ขั้นตอนแปลก ๆ ที่แอพไม่ทำงานเลยจนกว่าเธรดทั้งหมดจะถูกฆ่า ฉันจะจัดการกับการเปลี่ยนแปลงการวางแนวหน้าจอได้อย่างสง่างามได้อย่างไร? โค้ดตัวอย่างด้านล่างตรงกับที่โปรแกรมจริงของฉันทำ: public class MyAct extends Activity implements Runnable { public ProgressDialog mProgress; // UI has a button that when pressed calls send public void send() { mProgress = ProgressDialog.show(this, "Please wait", "Please wait", true, true); Thread thread = …