2011-09-15 4 views
3

미래의 특정 시간에 팝업을 표시하는 프로그램을 만들고 싶습니다. 오늘 밤 5시. 기본적으로이 프로그램은 약속, 회의 등을위한 미리 알림/알림 시스템입니다.Java 알람 시계

내 첫 번째 본능은 매시간 컴퓨터의 시간을 확인하고 currentTime ==를 확인하는 일종의 "시계 수신기"를 만드는 것이 었습니다. alarmTime. 그러나 이것이 너무 많은 리소스를 차지하는지 또는 프로그램이 끊임없이 그런 일을하는 것은 나쁜 습관인지는 알 수 없습니다. 또한 알람이 정확하려면 매분보다 매 초마다 검사해야한다고 생각합니다. (초를 확인하지 않고 5 : 00 : xx로 가면 5시에 갈 수 있습니다. : 00 : 59, 일부 사람들이 좋아하기에는 너무 늦을 수 있음). 매초마다 너무 많은 시간을 확인하고 있습니까?

두 번째 생각은 프로그램 실행이 시작될 때 알람이 꺼질 때까지의 시간 (예 : 5 시간)을 계산합니다. 그런 다음 5 시간을 기다린 다음 경보 음을냅니다. 그러나 그럴 가능성은 낮지 만 사용자가 컴퓨터 시간을 변경하는 것이 가능하고 잘못된 시간에 알람이 울릴 것이라고 생각했습니다. 그래서 이것은 실제로 작동하지 않습니다.

스레드를 사용하는 몇 가지 솔루션을 보았지만 아직 익숙하지 않아 사용하지 않을 것입니다.

저는 첫 번째 해결책에 기대고 있지만 효율적인지, 다른 프로그램의 속도를 늦추지는 않으려합니다. 아마 나는 그것을 overthinking하고 시계를 확인하는 것은 사소한 작업이지만, 나는 단지 내가 틀린 일을하고 있지 않다는 것을 확인하고 싶었다.

+0

아이디어가 이해됩니다. 데스크톱 응용 프로그램이 될 것입니까? 그렇다면 특정 운영 체제에서만 개발하고 싶습니까? – Bajji

+0

그래, 나는 백그라운드에서 실행되는 Windows 용 프로그램이되기를 희망하고 있으며 알람이 울리도록 설정되었을 때만 팝업을 표시합니다. – shadow

+0

처음으로 가십시오. GigaHertz에서 일하는 컴퓨터의 경우 초당 시간을 확인하는 것이 쉽습니다. –

답변

0

첫 번째 해결 방법은 정상입니다. 깨어나서 시간을 확인하고 다시 잠자는 것은 전혀 문제가되지 않습니다. 원할 경우 매초마다 확인할 수 있지만 1 분의 해상도 만 필요하면 예를 들어 확인하십시오. 30 초마다.

두 번째 방법은 이미 설명한 문제가 있습니다. 남은 시간 동안 잠자기 상태로 전환하고 사용자가 시간을 변경하면 (또는 시간이 다른 시간대와 동기화 된 경우와 같이) 다른 시간대에 알람이 울립니다. 시스템 시간이 변경 될 때 프로그램이 다시 호출되도록 후크를 등록 할 수 있으면이를 피할 수 있지만 Java에서는 쉽게 수행 할 수 없습니다.

1

수면 솔루션은 매우 간단하지만 java.util.Timer을 사용하면 여러 가지 알람 등을 위해 유틸리티를 확장하는 명확한 방법을 제공합니다. 알림을 표시하기 위해 스윙을 사용한다고 가정하면 TimerTask은 Swing 이벤트 스레드에서 일부 작업을 수행해야합니다. SwingUtilities.invokeAndWait(...)이 도움이 될 것입니다.

관련 문제