คำสั่ง finish() จะเป็นแค่การบอกว่าจบการทำงานแล้ว แต่ถ้าในโปรแกรมของเรายังรัน service หรือ Listener ใดๆอยู่ โปรแกรมก็จะยังทำงานต่อไปจนกว่าจะจบ service หรือ Listener นั้น
ดังนั้นบางคนที่ใช้คำสั่ง finish() แล้วยังสงสัยว่าทำไมโปรแกรมยังรันเบื้องหลังอยู่ไม่ยอมปิดจริงๆ ก็เพราะสาเหตนี้
ส่วนคำสั่ง System.exit(0) จะเป็นการบังคับให้โปรแกรมหยุดทำงานทันทีไม่ว่าจะมี service หรือ Listener ใดๆอยู่ก็ตาม เปรียบเหมือนการ force close ซึ่งในการใช้งานต้องระวังให้มากและต้องแน่ใจว่าไม่มีโพรเซสใดค้างอยู่แล้วไม่งั้นอาจทำให้โปรแกรม error ได้ เช่นมีคำสั่ง save หรือเขียนข้อมูลอยู่ซึ่งยังทำไม่เสร็จแล้วใช้คำสั่ง System.exit(0) จะทำให้การเซฟนั้นไม่สมบูรณ์และไฟล์ข้อมูลอาจเสียหายได้
No comments:
Post a Comment