2011-04-17 16 views
5

Swing kullanarak küçük bir Java uygulaması yazıyorum. Uygulama ayrıca bir ağ bileşenine de sahiptir.Java uygulamasından çıkmadan önce temizleme

Çıkmadan önce bazı kodları çalıştırmak istiyorum (kanallar, anahtarlar vb.) .Bu arada, temizlemenin yapılacağı bir Çıkış düğmesi eklemeden bunu yapmak için bir yol var, sonra da System.exit yap()?

cevap

5

windowClosing() numaralı telefondan here numaralı telefondan istediğinizi yapabilmeniz gerekir.

8

JVM kapatıldığında çalışacak bir işlev eklemek için Runtime#addShutdownHook işlevini kullanabilirsiniz.

+0

IMO bu en iyi yanıt ... windowClosing(), uygulamanızın pencerede DISPOSE yerine EXIT konumuna ayarlanmışsa çağrılmaz. Her durumda aranması garanti edilmez ve bu nedenle kaynaklarınızın temizlenmesinin garanti altına alınması kadar etkili değildir. – teh1

1

'Kapatma tuşları': SelectionKeys? Bunlar hakkında hiçbir şey yapmanıza gerek yok. Kanalın kapatılması tüm SelectionKey'lerini otomatik olarak iptal eder. Bekleyen verileriniz olmadığı sürece, temizlemeniz gerekir. Kanalları da kapatmanız gerekmez, OS sizin için bunu yapar.

+0

Biraz veri beklediğimi düşünüyorum, çünkü uygulamanın birden çok çalışmasıyla ilgili garip davranışlar elde edeceğim.Şimdi düzgün bir şekilde temizlediğimde, normale dönmüş gibi görünüyor. – adivasile

İlgili konular