현재 특정 시간에 코드 조각을 실행하려고합니다. 몇 가지 연구가 끝나면 올바른 방법은 AlarmManger
을 사용하는 것입니다. 코드는 매일 오전 3시에 실행되어야합니다. 전화가 오전 3시에 종료되면 전화를 켜고 코드를 바로 실행해야합니다.특정 시간에 매일 코드 실행 - AlarmManager
Google 검색 결과를 사용하여 많은 결과를 발견했습니다. 하지만 내 코드가 제대로 작동하지 않습니다.
어제 알림이 도착했습니다. 알림 시간은 오후 10시였습니다. 그러나 코드에서 시간은 오전 3 시로 설정됩니다. 나는 (테스트 때문에) 많은 시간 동안 알람 매니저를 설치했다. 트리거 된 AlarmManager가 오래된 것일 수도 있습니다. 참고 : 새 AlarmManager를 설정하기 전에 휴대 전화에서 전체 애플리케이션을 삭제하고 새로 설치했습니다. (나는이 모든 설정 알람 관리기의 삭제됩니다 생각?)
이 좋아, 내가 사용하고있는 코드입니다 :
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 0);
calendar.add(Calendar.MINUTE, 0);
calendar.add(Calendar.HOUR, 3);
Intent _myIntent = new Intent(MainActivity.this, AlarmReceiver.class);
_myIntent.putExtra("MyMessage","Content of the message");
PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 123, _myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) MainActivity.this.getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000*60*60*24, pendingIntent);
이 코드는 (내 응용 프로그램의 모든 시작에 실행됩니다 내부 MainActivity's
onCreate();
방법).
대신 alaram manager를 사용하면 날짜와 시간이 현재 날짜와 다른 경우 sharepreference에 날짜와 시간을 저장해 보았습니다. ur 코드를 실행하고 이전 날짜 대신 새 날짜와 시간을 저장할 수 있습니다. –
@LokeshDesai 하지만 어떻게 기본 'AlarmManager' 작업을 할 수 있습니까? 현재 오후 3시에 발사하지 않습니다. 그리고 아이디어를 실현하기 위해서는 특정 시간에 시작해야합니다. 즉, 공유 환경 설정에서 제공됩니다. – MyNewName
예. 당신은 내 생각에 맞습니다. 특정 시간에 실행되지만 정확하게 실행됩니다. –