마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

alarmmanager 문의 db사용 여부

0 추천

현재 요일은 사용하지 않고,

시간과 분만 사용하여

알람시계를 제작중인데요.

알람은 총 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);
}

 

쿠쿠부다스 (6,470 포인트) 님이 2017년 2월 28일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...