2014-06-14 2 views
1

내 안드로이드 응용 프로그램 (안드로이드는 중요하지 않습니다. 모든 클라이언트 응용 프로그램은 비슷합니다) 나는 정기적으로 서비스를 실행합니다. 일정 시간이 경과 (예 : 7 일)되고 사용자가 목표를 작성하지 않으면 알림을 보냅니다. 그러나 사용자가 휴대 전화의 시간을 미래의 날짜로 변경하면 (거짓 긍정을 나타냄) 알림을 전송합니다. 그러나 그것은 거짓입니다.클라이언트의 잘못된 날짜 변경 처리

long differenceMinutes = 
    Math.abs((System.currentTimeMillis()/1000L) - lastGoalTime)/60; 

좋은 경로 :
- 사용자가 2014 년 6 월 15 목표를 만들어 나는 장치에이 날짜를 저장.
- 내 서비스가 새로운 목표를 확인합니다.
- 2014 년 6 월 22 일에 새로운 목표가 완료되지 않은 경우 알림을 전송합니다.

잘못된 경로 :
- 사용자가 2014 년 6 월 15 일에 목표를 설정하고이 날짜를 기기에 저장했습니다.
- 새로운 목표에 대한 나의 서비스 점검 - 2014년 6월 16일 사용자에 (22)에 대한 그의 현지 시간 6월 2014
을 변경합니다.
- 새 목표를 완료하지 않았습니다. 단 1 일만 지나도 응용 프로그램에서 알림을 보냅니다.
- 7 일이 완료 될 때까지 신청서를 보내지 않기를 바랍니다.

어떻게 이러한 상황을 겪을 수 있습니까?
시간 서버에 연결하여 현재 시간을 얻는 것을 선호하지 않습니다.
이러한 유형의 문제를 해결할 수있는 방법이 있습니까?
용어를 알지 못해 죄송합니다.

+0

시스템을 신뢰할 수없는 경우 신뢰할 수있는 시스템을 사용해야합니다. 사용자가 소유 한 모든 하드웨어가 계산에 오류가 있으므로 밀리 초 단위로 계산할 수 없으며 신뢰할 수 있습니다. 따라서 시간 서버를 사용하여 오류를 수정하는 것입니다. –

+0

일부 외부 리소스에 의존하지 않고 해결하는 것이 불가능할 수도 있습니다. – matiash

답변

1

가능한 해결 방법 또는 어쩌면 솔루션은 서버를 갱신 DATE_CHANGED 이벤트 &을 검출 할 수 있을까?

브로드 캐스트 리시버를 확장하고 인 텐트 필터에 다음 작업을 추가하십시오. 물론 xml을 통해 수행 할 수도 있습니다.

intentFilter.addAction("android.intent.action.DATE_CHANGED"); 
+0

언제 해고 되었습니까? 매일 매일? 또는 * 사용자가 시스템 날짜를 변경 한 경우에만 *? –

+0

아, 그리고 흥미롭게도이 문제에 관한 버그가 있습니다. (https://code.google.com/p/android/issues/detail?id=2880) - 그 사실을 알고 있어야한다고 말하는 것은 아닙니다. , 단지 FYI. 나는 너의 포스트까지이 사건에 관하여조차 몰랐다! –

+1

사용자가 설정을 통해 날짜를 변경하면 시작됩니다. http://stackoverflow.com/questions/10831789/date-changed-broadcast-is-not-being-fired – Ryan