적절한 시간에 플래그를 설정하기 위해 AlarmManager
을 사용하면 주기적으로 확인할 필요가 없습니다.
는 예를 들어, Activity
에 BroadcastReceiver
을 정의, 즉 FLAG_KEEP_SCREEN_ON
플래그를 지 웁니다
private static final String ACTION_SCR_OFF = "yourpackagename.ACTION_SCREEN_OFF";
private final BroadcastReceiver screenOffReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
};
등록/동적으로 등록 취소 :
@Override
protected void onResume() {
super.onResume();
registerReceiver(screenOffReceiver, new IntentFilter(ACTION_SCR_OFF));
}
@Override
protected void onPause() {
unregisterReceiver(screenOffReceiver);
super.onPause();
}
그리고에서이 수신기를 트리거 알람을 설정 적절한 시간 (이 예에서는 매일 16:00) :
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 16);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent intent = new Intent(ACTION_SCR_OFF);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, pendingIntent);