Pagina 3 din 3
Utilizând capcane de închidere
Lista 3 arată versiunea aceleiași aplicații care rezolvă această problemă. Noua versiune a aplicației modifică codul din Lista 2, instalând opritorul de închidere. Clasa acestei capcane este definită ca fiind clasa interioară a clasei principale a aplicației. Astfel, accesează toate câmpurile și metodele din clasa principală. În lista 3, metoda de rulare a clasei de capcane pur și simplu numește metoda de închidere a clasei principale. Acest lucru asigură că este apelat când aplicația se termină.
Observați metoda inițializării. Primul lucru pe care îl face este să creeze o instanță a clasei interne MyShut-downHook, care moștenește clasa Thread.
MyShutdownHook închidere Hook = new MyShutdownHook ();
Acum, după obținerea unei instanțe a clasei MyShutdownHook, o înregistrăm în Runtime folosind metoda addShut downHook:
Runtime.getRuntime (). Adăugați ShutdownHook (shutdownHook);
Restul metodei de inițializare se potrivește exact aceleiași metode din listare 2. În această parte este creat un fișier temporar și este afișată linia Creare temporară a fișierului.
Încercați să rulați această mică aplicație Swing. Asigurați-vă că fișierul temporar este șters în orice mod, indiferent de modul în care închideți aplicația.
Capcanele de închidere pe care le-am acoperit în acest articol sunt, de fapt, singura soluție corectă la problema executării unui cod la sfârșitul aplicației. Și pentru că nu poți fi sigură cum utilizatorul îți închide aplicația de data aceasta, folosirea lor va facilita foarte mult viața ta, asigurându-te că regulile pe care le-ai setat sunt îndeplinite.