2014-12-19 2 views
1

환경 설정 값을 마지막으로 설정 한 후 Android 기기가 재부팅되었는지 감지하려고합니다. 이상적으로, 나는 android.permission.RECEIVE_BOOT_COMPLETED 허락없이 그것을하고 싶다.전화가 다시 부팅되었는지 확인합니다.

일종의 세션 ID가 포함 된 다른 환경 설정 값을 저장하는 방법 중 하나는 생각하고 있습니다. 문제의 환경 설정 값을 업데이트하면 세션 값도 업데이트됩니다. 세션 값에 대한 기본 설정에서 값을 확인할 때 현재 세션 값과 같으면 다시 부팅하지 않았습니다. 현재 세션 값이 저장된 값과 다른 경우 다시 부팅됩니다. 불행히도, 나는 세션 값을 찾기 위해 오랫동안 문서를 파고 있었고 아무것도 찾을 수 없습니다.

두 가지 중 하나를 도와 드리겠습니다. 세션 ID 나 부팅 ID와 비슷한 값을 찾을 수있는 위치를 제공 할 수 있다면 알고리즘을 사용하겠습니다. 또는 문제를 해결하기 위해 다른 알고리즘을 사용할 수 있습니다. 정말 고맙습니다!

+3

당신은'SystemClock.elapsedRealtime() 시도 했습니까? – Raptor

+1

부팅을 수신 대기하는 이유는 무엇입니까? – psyren89

+0

불행하게도,'SystemClock.elapsedRealtime()'이 내가 원하는 것을 나에게 줄 것이라고는 생각하지 않는다. 마지막 부팅 이후의 시간을 제공합니다. 마지막으로 부팅 한 후 3000000 밀리미터의 시간을 얻었고 이전에 저장 한 값이 1000000 밀리미터 였을 경우 20000 밀리가지나 갔는지 또는 전화가 재부팅되고 또 30000 밀리가지나 갔는지는 알 수 없습니다 으로. –

답변

0

예 Application 클래스와 비 정적 방송 수신자 ACTION_SHUTDOWN을 사용하여이 작업을 수행 할 수 있습니다. 응용 프로그램 클래스는 이가지 경우

년에 시작되었다
  1. Android 기기 부팅
  2. 응용 프로그램이 시작 그것 "강제-닫기"있었습니다.

ACTION_SHUTDOWN이 응용 프로그램을 사용하면 응용 프로그램 클래스가 시작될 때 부울 shutdown = true 을 저장하기위한 환경 설정 또는 데이터베이스가이 부울을 검사합니다. 그것이 사실이면 장치가 부팅되고, 그렇지 않으면 사용자가 앱을 강제로 중지해야합니다.

당신이 내가 쓴 다음 post을 읽고 내가

  1. 응용 프로그램 클래스
  2. 부팅 방송 수신기를 추가 example,하는 코드를 시도 할 수 있습니다 더 많은 정보를 얻으려면 (차이를 보여주고 모두에 시작하는 `) 응용 프로그램 CALSS에 등록입니다
  3. 종료 방송 수신기는
+0

이 시나리오에서 다루지 않는 한 가지 시나리오는 전화가 끊어진 다음 다시 켜는 경우입니다. 예를 들어, 사용자는 배터리를 떨어 뜨리거나 배터리를 꺼내 즉시 전원을 끄게됩니다. 휴대 전화가 다시 켜지면 앱에서 발생했음을 알 수 없습니다. – Sam

관련 문제