참고 링크 : 

https://developer.android.com/training/scheduling/alarms.html

http://droidmentor.com/schedule-notifications-using-alarmmanager/

AlarmManager를 이용한 작업 (jobscheduler를 이용한 경우도 같음) 은 기기가 reboot되면 스케쥴해놓은 것이 사라진다. 그러므로 reboot시 재등록을 하는 작업이 필요하다. 

재등록 manifest의 예시

<uses-permission android:name=“android.permission.RECEIVE_BOOT_COMPLETED”/>

<application>
<!– Register the Alarm Receiver –>
<receiver android:name=“.AlarmReceiver”
          android:enabled=“false”>
    <intent-filter>
        <action android:name=“android.intent.action.BOOT_COMPLETED” />
    </intent-filter>
</receiver>
<application>

재등록의 코드 예시 (broadcast receiver에 의해 수행된다. )

public class AlarmReceiver extends BroadcastReceiver {

   String TAG = “AlarmReceiver”;

   @Override
   public void onReceive(Context context, Intent intent) {

                // 이부분에서 alarmmanager 재시작

   }

}

알람생성 예시

Intent intent1 = new Intent(context, cls);
       PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
                 DAILY_REMINDER_REQUEST_CODE, intent1, PendingIntent.FLAG_UPDATE_CURRENT);
       AlarmManager am = (AlarmManager) context.getSystemService(ALARM_SERVICE);
       am.cancel(pendingIntent);
       pendingIntent.cancel();

intent의 타깃 class(위의 예시에서는 cls)는 정해진 알람에 따라 수행된다.

알람의 정해진 시기에 따라 수행될 작업은 broadcast receiver에서 수행된다. 

알람 수행 receiver 예시 코드

public class AlarmReceiver extends BroadcastReceiver {

   String TAG = “AlarmReceiver”;

   @Override
   public void onReceive(Context context, Intent intent) {
       //Trigger the notification
        // 이부분에서 notification을 만들고 발생한다.
   }
}

Comments are closed.

Post Navigation