Jak zaimplementować bezczynne zadanie w Java Swing
Mam aplikację GUI, która staje się dość wolna. Chcę rozpocząć wprowadzanie odmierzania czasu dla różnych zadań GUI - jednak wiele z naszych akcji GUI wyzwala inne akcje, które następnie „wywołują później”, aby wywołać inne działania.
Ostatecznie wszystko się uspokaja i nie ma już nic więcej do roboty. W tej chwili chcę zatrzymać timer i zgłosić, jak długo trwała „akcja” GUI.
Pomyślałem, że sposobem na to jest zaimplementowanie metody o nazwieinvokeOnceIdle(Runnable task)
. Metoda wykona dostarczone zadanie tylko wtedy, gdy AWTEventQueue jest „pusta”. tj. dostarczone „zadanie” powinno być ostatnią rzeczą w kolejce.
Jednym ze sposobów na to jest, jeśli istnieje sposób na określenie „najniższego” priorytetuSwingUtilities.invokeLater
- ale to nie jest możliwe.
Następnie sprawdziłem, czy mogę „wywołać Later” Runnable, który sprawdza, czy kolejka zdarzeń jest „pusta” - ale nie ma publicznego sposobu sprawdzenia, czy kolejka zdarzeń jest rzeczywiście pusta.
Jak najlepiej to zrobić?