현재 요일은 사용하지 않고,
시간과 분만 사용하여
알람시계를 제작중인데요.
알람은 총 4개로 할려고 하고있고요.
On일경우에만 alarmmanager를 등록을 하고,
아닐경우에는 cancel를 시킬려고 합니다.
알람 id는 각각 부여를 할려고 합니다.( ex alarm1 - 1111, alarm2 - 2222 ~~~~)
24시간마다 실행되도록 할려고 하고 있습니다.
이럴경우 아래와 같이 구현하는 것이 맞는지 확인을 부탁드립니다.
당연이 재시작이후에 브로드캐스트에 추가적으로 재등록을 해야하는 것은 고려하고 있습니다.
제시간에 동작여부를 확인하기 위해서 activity를 임시로 잡아 놨습니다.
이렇게 구현할 경우 굳이 db를 사용 안해도 되는 것이 아닌가요?
값을 받을때마다 cancel를 하거나 다시 입력받을 경우 cancel했다가 다시 set시켜줘도 될거같은데..
이렇게 구현해도 될까요?
private void setAlarm(int alarmId,int h,int m){
Intent intent = new Intent(ServiceClass.this,Manual.class);
PendingIntent sender = PendingIntent.getActivity(mContext, alarmId, intent, PendingIntent.FLAG_CANCEL_CURRENT);
mManager = (AlarmManager)getSystemService(ALARM_SERVICE);
calendar.set(Calendar.HOUR_OF_DAY, h);
calendar.set(Calendar.MINUTE, m);
calendar.set(Calendar.SECOND, 0);
mManager = (AlarmManager)getSystemService(ALARM_SERVICE);
//알람 시간
long oneday = 24 * 60 * 60 * 1000;// 24시간
mManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), oneday, sender);
Log.e(TAG, "해당 알람번호 : "+alarmId +"|| 알람 설정 시간 : " + calendar.getTime().toString());
}
private void cancelAlarm(int alarmId) {
Intent intent = new Intent(ServiceClass.this,Manual.class);
PendingIntent sender = PendingIntent.getActivity(mContext, alarmId, intent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); // 알람
am.cancel(sender);
Log.e(TAG, "해당 취소 알람번호 : "+alarmId);
}