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

if문 계속해서 비교하려는데요

0 추천
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);



init();



if (year == etYear && month == etMonth && day == etDay && hour == etHour && minute == etMinute){
        // 알람 매니저에 알람을 등록
    AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
}
알람매니저를 통해 핸드폰 시간을 가져오고
핸드폰 시간과 DB값이 일치할 시 에 TTS로 알림을 울려주는 프로그램인데
 30분에 어플을 켜서 36분이 되면 자동으로
읽어줘야하는데 소스에서 보는것과 같이 어플을 실행하면 1번 비교하고 
끝나기때문에 36분이 되어도 읽어주지 않네요 어떻게 해야하나요 ㅠ 
while(true) 무한 반복문을 사용해봤는데 실행하고 나서 과부화 되서그런지 렉때문에 멈추네요 
안드개발자777 (140 포인트) 님이 2017년 6월 14일 질문

2개의 답변

0 추천
무한반복하시면 안되구요 저도 비슷한걸 해봤는데

일단 일정시간마다 반복적으로 체크해주는 기능이 있습니다.

처음에는 그기능으로 했는데 오차가발생해서 찾아보니 정확한 시간체크보다는 반복에 중점을둬서 그런다고 하더군요

그래서 해달 알람을 한번 등록후 > 알람 실행하는 메소드를 타겠죠? >  해당기능을 실행하고 > 다시 알람매니저등록

하는 식으로 진행했습니다

위와같은상황은 알람매니저 등록시 잘못등록된것으로 보이며 직접 값을 집어넣어서 테스트부터 해보세요
익명사용자 님이 2017년 6월 15일 답변
0 추천
알람 매니저를 사용하는 이유는 앱이 항상 켜져 있을 필요 없이

특정시간에 특정동작을 하기 위해서 입니다.

 

알람에 제대로 등록이 되어 있다면 해당 시간에 등록된 동작이 이루어질테고

해당 동작(서비스)에서 알람음을 플레이 해주시면 되십니다.

다만, 버전별로 슬립상태일때는 알람이 제시간에 울리지 않을 수 있으니,

버전별로 다른 api를 사용하셔야만 합니다.

 

알람예제나 설명등이 구글문서 또는 블로그에 많으니 구글링해서 먼저 공부를 해보시기를 권해드립니다.
익명사용자 님이 2017년 6월 15일 답변
...