2016-07-19 2 views
1

안녕하세요, alarmManager을 사용하여 매 3 분마다 경보를 울립니다. 그래서 나는 매 3 분마다 알람을 울리는 방법으로 setRepeating을 사용했다. 이것은 일부 장치에서 작동합니다. 그러나 절전 모드로 전환 된 후 알람이 작동하지 않습니다.setExact, setInexactRepeating 및 setRepeating의 차이점은 무엇입니까? 언제 그리고 어느 것을 사용할 것인가?

public void startAt3() { 
    AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
    /* Set the alarm */ 
    Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(System.currentTimeMillis()); 
    /* Repeating on every 3 minute interval */ 
    manager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 
      1000 * 60 * 3, pendingIntent); 
} 

나는 안드로이드 6.0에서 doze 모드로 간다고 읽었습니다. 따라서 setRepeating 메서드 대신 사용하는 것이 적절합니까?

답변

0

setExact - 이것은 명시된 시간에 정확하게 알람이 전달되도록 설정하는 데 사용됩니다.

setInexactRepeating - 이것은 미리 정의 된 알람 시간 간격을 설정하는 데 사용됩니다. 이 값이 setRepeating()보다 좋습니까? 이 접근법은 자원을 덜 소비하고 다른 배터리와 비교하여 배터리를 적게 소비합니다. 가능한 경우 setInexactRepeating()을 사용하는 것이 좋습니다. Android는 실시간으로 여러 정확한 알람을 동기화하여 리소스를 절약합니다. 다음은 정확한 반복을위한 가능한 값입니다.

INTERVAL_DAY 

INTERVAL_HALF_DAY 

INTERVAL_HOUR 

INTERVAL_HALF_HOUR 

INTERVAL_FIFTEEN_MINUTES 

setRepeating (이전의 API 레벨 19) -이 밀리 초에 이르기까지 알람에 대한 정확한 시간을 설정하는 데 사용됩니다. 우리는 이것을 정말로 사용해야합니까? 이 방법은 리소스를 더 많이 사용하기 때문에 실제로 필요하지 않는 한이 방법을 권장하지 않습니다.