وظيفة الاتصال عند خروج البرنامج في Java

StackOverflow https://stackoverflow.com/questions/63687

  •  09-06-2019
  •  | 
  •  

سؤال

أرغب في حفظ إعدادات البرنامج في كل مرة يخرج فيها المستخدم من البرنامج.لذلك أحتاج إلى طريقة لاستدعاء دالة عندما يقوم المستخدم بإنهاء البرنامج.كيف يمكنني فعل ذلك؟

أنا أستخدم جافا 1.5.

هل كانت مفيدة؟

المحلول

يمكنك إضافة رابط إيقاف التشغيل إلى تطبيقك عن طريق القيام بما يلي:

Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
    public void run() {
        // what you want to do
    }
}));

وهذا يعادل في الأساس تجربة منع {} أخيرًا {} حول البرنامج بأكمله، ويشمل بشكل أساسي ما هو موجود في الكتلة الأخيرة.

يرجى ملاحظة تحفظات رغم ذلك!

نصائح أخرى

إضافة هوك الاغلاق addShutdownHook(java.lang.Thread) ربما هو ما تبحث عنه.ولكن هناك مشاكل في هذا النهج، على الرغم من:

  • سوف تفقد التغييرات إذا تم إحباط البرنامج بطريقة غير منضبطة (على سبيل المثال.إذا قتل)
  • ستفقد التغييرات في حالة وجود أخطاء (تم رفض الإذن، القرص ممتلئ، أخطاء في الشبكة)

لذلك قد يكون من الأفضل حفظ الإعدادات على الفور (ربما في سلسلة رسائل إضافية، لتجنب أوقات الانتظار).

هل تقوم بإنشاء تطبيق واجهة المستخدم الرسومية مستقل (على سبيل المثال؟يتأرجح)؟

إذا كان الأمر كذلك، فيجب عليك التفكير في كيفية توفير خيارات للمستخدمين حول كيفية الخروج من التطبيق.على وجه التحديد، إذا كانت هناك قائمة "ملف"، أتوقع أنه سيكون هناك عنصر قائمة "خروج".وأيضًا، إذا أغلق المستخدم النافذة الأخيرة في التطبيق، أتوقع أيضًا خروجه من التطبيق.في كلتا الحالتين، يجب عليه استدعاء التعليمات البرمجية التي تتعامل مع حفظ تفضيلات المستخدم.

يعد استخدام Runtime.getRuntime().addShutdownHook() بالتأكيد طريقة للقيام بذلك - ولكن إذا كنت تكتب تطبيقات Swing، فإنني أوصي بشدة بإلقاء نظرة على JSR 296 (Swing Application Framework)

إليك مقالة جيدة عن الأساسيات: http://java.sun.com/developer/technicalArticles/javase/swingappfr/.

يوفر تطبيق JSR المرجعي نوع الميزات التي تبحث عنها بمستوى أعلى من التجريد مقارنة بإضافة خطافات إيقاف التشغيل.

هنا هو التنفيذ المرجعي: https://appframework.dev.java.net/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top