2012년 5월 8일 화요일

[안드로이드] 부팅시간? 켜진시간??


public static final String ACTION_BOOT_COMPLETED

안드로이드가 껐다 켜지면 위와 같은 액션을 브로드케스트 리시버를 달아 받을 수 있다.
하지만 피치 못할 사정으로 브로드케스트 리시버를 사용 할 수 없다면?

SystemClock에 다음과 같은 두 메쏘드가 있다.

static long elapsedRealtime()
딥슬립 시간을 포함한 부팅 후 경과한 시간을 밀리초 단위로 리턴함.

static long uptimeMillis()
딥슬립 시간을 제외한 부팅 후 경과한 시간을 밀리초 단위로 리턴함.

uptimeMillis()의 경우는 딥슬립 시간을 제외 하니 다른 용도로 써야겠고..
elapsedRealtime()을 쓰면 될듯 하다. System.currentTimeMillis() - elapsedRealtime()하면 부팅 시간이니 말이다.

가령 shared_prefernce 등에 시간을 저장해 두고
OnCreate()에서 그값을 읽어와 부팅시간과 비교해
값이 적다면 새로 부팅한거니 그에 따른 처리를 한뒤 shared_prefernce에 다시 값을 넣어 주고,
값이 더 크다면 아무 것도 하지 않으면 된다.

물론 BOOT_COMPLETED를 받아야만 하는 경우도 있겠지만, 단순히 우리 어플리케이션이 안드로이드가 부팅되고 처음 실행 되는 건지 아닌지 정도는 구분할수 있다.

댓글 없음:

댓글 쓰기