[출처] :
http://blackzaket.blog.me/80113159648
Android에서는 기본적으로 AlarmManager를 제공하는데..
특정 작업을 Manager에 등록해 두면 알아서 등록한 intent를 깨우준다.
AlarmManager am = (AlarmManager)con.getSystemService(Context.ALARM_SERVICE);
//RealTime으로 예약하는 경우
//반복의 경우
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * 60 * 60 * 24, pi);
//한번의 경우
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pi);
//부팅경과 시간으로 계산하는 경우
ELAPSED_WAKEUP
주의 사항
간단하게 2가지의 주의 사항이 있는데
1. AlarmManager에 등록되어진 Alarm의 경우 단말이 재부팅을 하게 되면 깨끗하게 최기화 되어진다.
2. calendar 또는 date로 시간을 Set할때 현재 시간에 기준하여 알람 시간이 내일인지 오늘인지를 잘 계산해야 한다. (뭔지 모르고 엄청난 삽질을;;;;)
1번의 해결 방법으로는 Intent-filter를 이용하는 방법이 있는데...
알람을 초기화 하는 Activity에 다음과 같은 intent-filter를 달아주는것이다.
<action android:name="android.intent.action.BOOT_COMPLETED" />
intent에서는 getAction과 같은 값으로 Intent를 구분할 수 있다.
[출처] [android] AlarmManager 사용하기 |작성자 파란검정
'Android > Tip&Tech' 카테고리의 다른 글
안드로이드 백그라운드 설명서 pdf (0) | 2010.11.25 |
---|---|
wifi를 이용한 심플싱크 (0) | 2010.11.25 |
[펌][안드로이드]사운드 재생(sound pool) (0) | 2010.11.25 |
안드로이드 2.2 변경사항(안드로이드프로그래밍정복 책참고) (0) | 2010.11.25 |
[펌]안드로이드 Intent 그리고 PendingIntent 와 Intent Sender (0) | 2010.11.24 |