2013-09-16 3 views
-1

달리기 트레이너 앱을하고 싶습니다. 내가하는 일 중 하루가 지나면 날짜가 변경되었음을 알 필요가 있습니다 (24:00).날짜가 변경된 경우 검색하는 가장 효율적인 방법은 무엇입니까?

여기에 몇 가지 옵션이 있습니다 : 현재 시간이 효율적이지 인, 24:00 후 작은 경우는 물론

  • 난 항상 확인할 수 있습니다.
  • 또한 나는 의도 필터 (ACTION_DATE_CHANGED)를 사용할 수 있음을 알았으며이 의도를 듣는 브로드 캐스트 리시버와 함께 날짜가 바뀌 었음을 알 수 있습니다. 그러나 나는 이것이 항상 듣기 때문에 아마도 가장 효율적인 방법이 아니라고 생각하며 아마도 배터리와 CPU를 사용할 것입니다. 안드로이드는 아마도 효율적으로 방송 수신기를 만드는 데 좋은 일을했을지 모르지만, 그것이 내 필요에 적합한 지 궁금해하고 있습니다.
  • 알람 관리자를 사용 하시겠습니까?

어느 것이 가장 좋으며 다른 방법이 있습니까? 당신은 무엇을 제안하고 왜 그럴까요?

+1

날짜가 바뀌거나 날짜가 앱을 마지막으로 사용한 시간과 다른 경우 앱을 실행할 때를 알아야합니까? – Prmths

+0

*이 포럼을 처음 사용합니다. * 참고 자료, 스택 오버플로는 포럼이 아닙니다. Q & A 사이트이므로 다르게 작동합니다. 가장 큰 것을 얻으려면 [Quick Tour] (http://stackoverflow.com/about)를 먼저 읽으십시오. [Ask]도 참조하십시오. – Leigh

+0

의도 필터가 폴링에 의해 작동하지 않습니다. 그들은 시스템에 등록합니다. 시스템은 단순히 등록 된 작업을 알립니다. 따라서 등록한 동작이 현재 위치를 찾는 것과 같이 배터리 자체를 소모하지 않는 한 CPU주기와 배터리를 낭비하지 않아도됩니다. – f2prateek

답변

2

00:00 때마다 조치를 취해야하는 경우 AlarmManager 및 BroadcastReceiver를 사용해야합니다. 그런 다음 수신기의 onReceive() 메서드 내에서 수행해야하는 작업을 수행 할 수 있습니다. 오, 그런데 BroadcastReceivers는 onReceive() 메소드에서만 디바이스를 활성화 상태로 유지하기 때문에 가장 효율적인 방법입니다.

AlarmManager를 사용하여 매일 00:00에 onReceive로 반복 호출을 설정하십시오. 만약 당신이 예를 들어 코멘트에 말해줘.

그 외에도 하루에 한 번 조치를 취할 필요가없는 경우 앱 자체를 간단히 확인할 수 있습니다. 앱이 SharedPreferences에 마지막으로 열렸을 때 언제든지 저장할 수 있습니다.

+0

답변을 주셔서 감사합니다.이 작업을 수행하는 방법과 AlarmManager와 BroadcastReceiver를 연결하는 방법에 대한 코드를 제공 할 수 있습니까? 또한 앱이 전경이나 배경에서 실행될 때 AlarmManager가 시간 변경을 놓칠 수 있습니다. 즉, 00:00이 경과/도달했을 때 알림이 표시되지 않습니다. –

관련 문제