วิธีที่ดีที่สุดในการออกจากแอปพลิเคชัน Java ด้วยรหัสคืออะไร
วิธีที่ดีที่สุดในการออกจากแอปพลิเคชัน Java ด้วยรหัสคืออะไร
คำตอบ:
คุณสามารถใช้ได้ System.exit()เพื่อวัตถุประสงค์นี้
อ้างอิงจากเอกสาร Java 8 ของ oracle:
public static void exit(int status)ยุติ Java Virtual Machine ที่รันอยู่ในปัจจุบัน อาร์กิวเมนต์ทำหน้าที่เป็นรหัสสถานะ โดยการประชุมเป็นรหัสสถานะภัณฑ์บ่งบอกเลิกผิดปกติ
วิธีการนี้เรียกวิธีการออกในคลาสรันไทม์ วิธีนี้จะไม่ส่งคืนตามปกติ
การโทร
System.exit(n)นั้นเทียบเท่ากับการโทรได้อย่างมีประสิทธิภาพ:
Runtime.getRuntime().exit(n)
System.exit(0);
"0" ช่วยให้ใครก็ตามที่เรียกว่าโปรแกรมของคุณรู้ว่าทุกอย่างก็โอเค อย่างไรก็ตามหากคุณออกจากข้อผิดพลาดคุณควรSystem.exit(1);หรือด้วยหมายเลขที่ไม่ใช่ศูนย์อื่นที่สอดคล้องกับข้อผิดพลาดเฉพาะ
นอกจากนี้ตามที่คนอื่น ๆ ได้กล่าวถึงทำความสะอาดก่อน! ที่เกี่ยวข้องกับการปิดไฟล์และเปิดแหล่งข้อมูลอื่น ๆ
System.exit(1)(หรือหมายเลขอื่น ๆ ) คือถ้าคุณต้องการระบุว่ามันปิดเนื่องจากข้อผิดพลาด System.exit(0)ระบุว่าโปรแกรมปิดตามปกติ นอกจากนี้คุณยังสามารถเปลี่ยน 1 เป็นหมายเลขใดก็ได้ที่คุณต้องการจากนั้นเมื่อคุณเรียกใช้แอปพลิเคชันของคุณจากสคริปต์คุณสามารถตรวจสอบว่ามีข้อผิดพลาดหรือไม่
System.exit(int i)จะใช้ แต่ผมจะรวมไว้ภายในทั่วไปมากขึ้นshutdown()วิธีการที่คุณจะรวมถึง "การทำความสะอาด" ขั้นตอนเช่นเดียวกับการปิดการเชื่อมต่อซ็อกเก็ตอธิบายไฟล์, แล้วSystem.exit(x)ออกด้วย
System.exit() มักจะไม่ใช่วิธีที่ดีที่สุด แต่ขึ้นอยู่กับใบสมัครของคุณ
วิธีปกติในการสิ้นสุดแอปพลิเคชันคือออกจากmain()วิธีการ สิ่งนี้ไม่ทำงานเมื่อมีเธรดที่ไม่ใช่เดมอนอื่นทำงานอยู่ตามปกติสำหรับแอปพลิเคชันที่มีส่วนต่อประสานผู้ใช้แบบกราฟิก (AWT, Swing ฯลฯ ) สำหรับโปรแกรมเหล่านี้คุณอาจหาวิธีที่จะสิ้นสุดการวนรอบเหตุการณ์ GUI ที่ (ไม่ทราบว่าเป็นไปได้ด้วย AWT หรือสวิง) System.exit()หรือวิงวอน
การใช้dispose();เป็นวิธีที่มีประสิทธิภาพมากในการปิดโปรแกรมของคุณ
ฉันพบว่าการใช้System.exit(x)รีเซ็ตบานหน้าต่างการโต้ตอบและสมมติว่าคุณต้องการข้อมูลบางอย่างที่นั่นข้อมูลทั้งหมดจะหายไป
ฉันเห็นด้วยกับจอนให้แอปพลิเคชันของคุณตอบสนองต่อบางสิ่งและโทรหา System.exit ()
ต้องแน่ใจว่า:
คำตอบคือ System.exit () แต่ไม่ใช่สิ่งที่ดีที่จะทำเช่นนี้ยกเลิกโปรแกรม การทำความสะอาดทำลายสิ่งที่คุณตั้งใจทำจะไม่เกิดขึ้น
มีสองคำตอบง่ายๆสำหรับคำถามนี้
นี่คือ "วิธีการระดับมืออาชีพ":
//This just terminates the program.
System.exit(0);
นี่เป็นวิธีที่งุ่มง่ามมากขึ้น:
//This just terminates the program, just like System.exit(0).
return;
System.exit(0); return;ก็ดีเช่นกันการส่งคืนจะป้องกันโค้ด ruther ใด ๆ ที่จะทำงานก่อนที่ระบบจะสามารถออกได้มิฉะนั้นคุณต้องมีการตั้งค่าสถานะ (..i.e. if (!called_exit) { further code after exit statement }
Runtime.getCurrentRumtime().halt(0);
halt: "วิธีนี้ควรใช้ด้วยความระมัดระวังอย่างมากซึ่งแตกต่างจากexitวิธีการวิธีนี้จะไม่ทำให้ตะขอสำหรับปิดระบบเริ่มทำงานและไม่ได้เรียกใช้ finalizers ที่ไม่ถูกเรียกใช้หากเปิดใช้งาน finalization-on-exit ได้รับการเริ่มต้นแล้ววิธีนี้จะไม่รอให้ฮุคปิดเครื่องหรือ finalizers ทำงานเพื่อให้งานเสร็จ " ในระยะสั้นที่คุณไม่ควรต้องใช้คุณควรต้องการhalt exit
System.exit()จะทำในสิ่งที่คุณต้องการ แต่ในสถานการณ์ส่วนใหญ่คุณอาจต้องการออกจากเธรดและปล่อยให้เธรดหลักยังมีชีวิตอยู่ ด้วยการทำเช่นนั้นคุณสามารถยกเลิกงานได้ แต่ยังคงสามารถเริ่มงานใหม่ได้โดยไม่ต้องรีสตาร์ทแอพ
สิ่งนี้ควรทำในวิธีที่ถูกต้อง:
mainFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
mainFrame.addWindowListener(new WindowListener() {
@Override
public void windowClosing(WindowEvent e) {
if (doQuestion("Really want to exit?")) {
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.dispose();
}
}