Tuesday, September 3, 2013

Android คำสั่ง finish(); และ System.exit(0);

คำสั่ง finish() จะเป็นแค่การบอกว่าจบการทำงานแล้ว แต่ถ้าในโปรแกรมของเรายังรัน service หรือ Listener ใดๆอยู่ โปรแกรมก็จะยังทำงานต่อไปจนกว่าจะจบ service หรือ Listener นั้น
ดังนั้นบางคนที่ใช้คำสั่ง finish() แล้วยังสงสัยว่าทำไมโปรแกรมยังรันเบื้องหลังอยู่ไม่ยอมปิดจริงๆ ก็เพราะสาเหตนี้

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

No comments:

Post a Comment