2012-04-12 3 views
1

저는 Android 프로그래밍에 익숙하지 않으며이 포럼에서 몇 초 안에 해결 될 가능성이 있습니다.응용 프로그램 시작시 날짜 변경 감지 - Android

시작 도중 응용 프로그램을 활성화하여 마지막 부팅 이후 날짜가 변경되었는지 감지하는 방법을 알아 내려고합니다.

날짜가 변경되면 텍스트보기에서 값을 변경하려고합니다. 그러나 그렇지 않은 경우에는 텍스트 뷰가 변경되지 않습니다. - 날짜 변경 문제에 붙어 있지만이 함수를 만드는 방법을 알고 있습니까?

alarmmanager를 읽었지만 부팅 할 때만 특정 시간에 발생할 필요가 없으므로 이것이 필요하지는 않습니다.

모든 조언을 주시면 감사하겠습니다.

감사합니다,

p.s 나는 기본적인 인용 응용 프로그램을 만드는 하루 페이지의 견적을 포함 할입니다. 이를 위해, 나는 날짜가 인용

+0

질문을 이해할 수 없습니다 – njzk2

+0

기본 견적 응용 프로그램을 만들고 오늘 페이지 견적을 포함하고 싶습니다. 이를 위해, 응용 프로그램이 견적을 변경하기 위해 날짜가 변경되었는지 여부를 알아야합니다. 이것이 의미가 있기를 바랍니다. – user983965

+0

예. 당신은 아마도 SharedPreferences에 날짜 (Calendar에 DAY_OF_YEAR)와 year를 저장하고 Activity가 시작될 때 값을 비교할 수 있습니다. – njzk2

답변

4

는 당신이 필요로하는 것은 이것이다 SharedPreference에 마지막 날짜를 설명하는 긴 값이 있습니다.
A Calendar.

활동이 시작될 때 (onCreate() 방법이 여기에 적합한 것으로 보입니다) 새로운 Calendar을 얻을 수 있습니다. 그것은 현재 날짜를해야합니다, 당신은 하루 추출 할 수 있습니다 :

Calendar c = Calendar.getInstance(); 
int thisDay = c.get(Calendar.DAY_OF_YEAR); //You can chose something else to compare too, such as DATE.. 
long todayMillis = c.getTimeInMillis(); //We might need this a bit later. 

는 그런 다음 마지막의 가능성 저장된 값을 읽어을이 값으로 달력을 설정 한 다음 오늘이 비교 :

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
long last = prefs.getLong("date", 0); //If we don't have a saved value, use 0. 
c.setTimeInMillis(last); 
int lastDay = c.get(Calendar.DAY_OF_YEAR); 

if(last==0 || lastDay != thisDay){ 
    //New day, update TextView and preference: 
    SharedPreferences.Editor edit = prefs.edit(); 
    edit.putLong("date", todayMillis); 
    edit.commit(); 
} 
+0

누군가가 전년도 이후로이 앱을 보지 못했고이 같은 논리를 깨뜨리는 해의 같은 날에 열어 보았을 가능성이 매우 높습니다. 그 해는 저 우스운 경우에도 저장해야합니다 : P (미안 해요 .. 하하했다) – dymmeh

+0

@dymmeh, 그게 맞아요. 그것에 대해 뭔가를 포함하는 것에 대해 생각했지만, 365 (366?) 따옴표가 있다면, "오늘의 따옴표"가 어떻게 작동해야하는지에 달려 있습니다. 일년 중 매일 문제가되지 않습니다. 그렇지 않으면 특정 날짜 이후로 경과 한 일수를 계산하여 그 값을 비교할 수 있습니다. – Jave

+0

따옴표가 변경되지 않으면 매우 참입니다. 나는 그가 그 (것)들을 서버에서 가져 오는 것을 예상하고 있었다 그러나 나는 나가 너무 많이 추측하고 있었다는 것을 짐작한다. – dymmeh

0

수행을 변경하려면 응용 프로그램의 순서를 변경되었는지 여부를 알 필요가있는 응용 프로그램이 시작될 때 :
:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this) 

if (prefs.getBoolean("firstLaunch", true)) 
{ 
    SharedPreferences.Editor editor = prefs.edit(); 
    editor.putBoolean("firstLaunch", false); 
    editor.putInt("date", new Date().getTime()); 
    editor.commit(); 
} 
else 
{ 
    if (new Date().getTime() != prefs.getInt("date", 0)) 
    { 
      // Do something 
    } 
} 
+0

이것은 작동하지 않습니다. getTime은 millis이며 항상 변경됩니다. – njzk2

+0

네, 그렇게 빨리 만들었습니다. Date() 사용 방법을 찾으려면 Android javadoc을 확인하십시오. – Manitoba

관련 문제