2016-10-03 4 views
0

나는 걸리는 단계를 모니터링 할 피트니스 앱을 만들려고합니다. 필자는 거의 7 일 동안 테스트를 해왔으며,이를 달성하기 위해 정말로 고심하고 있습니다.화면이 꺼져있을 때 실행되는 앱 만들기

지금까지는 화면이 켜져있을 때 실행되는 코드를 만들었지 만, 1-3 분 후에 화면이 꺼진 후에는 코드가 실행되지 않습니다. 내 코드는 1 분마다 또는 10 초 또는 1 초마다 단어를 저장하므로 모든 3 가지 구성으로 테스트되었습니다.

나는 다음과 같은 사용하여 시도 :

  • AlartManager (차이 모든 경보)
  • WakefulBroadcastReceiver는
  • 브로드 캐스트 리시버
  • 서비스 (StartForeground)
  • 웨이크 잠금
  • 추가하려면 내 앱을 허용 목록에 추가하면 삼성 기기의 'Doze 모드'가 사라집니다. 설명
  • 완전히 예비 그들, 내 PC에 10여 가지의 예를 가지고 배터리 최적화

에서 모든 응용 프로그램을 제거합니다. 그래서 나는 다른 접근 방식을 시도하고 간단한 질문을 직접 물어보십시오.

테스트 장치

HTC M8 한 안드로이드 V6.0.1

삼성 갤럭시 S6 가장자리 안드로이드 V6.0.1

질문

실행할 수있는 코드는 내가 원하는 모든입니다 화면이 검은 색 일 때도 30 분 이상 지나면 나타납니다. 1-3 분이 아닙니다. 손가락 하나에 균형을 맞추는 것보다 더 어려울 것 같습니다 :-)

누구든지 올바른 방향으로 갈 수 있도록 코드를 도와 줄 수 있습니까?

이 질문에 실제 코드를 게시하지 않는, 내가이 게시물

이전 질문 67 스크롤 긴 :-) 될 것이라고, 많은 것들을 시도 이후로는 적합하지 느꼈다 죄송합니다

전에 내가 만든 코드를 acvieve하기 위해 전에 만든 코드를보고 싶은 경우 게시물이 있습니다. Android OS shuts down the Wakelock + AlarmManager after a few minutes

+0

'단계'의 의미를 정의 할 수 있습니까? 사용자 높이와 거리를 기준으로 계산 된 값은 이동했거나 가속도계의 변화를 실제로 계산합니까? –

+0

예. 당신이 취하는 모든 단계는 한 걸음 한 단계입니다. 그 이상은 없습니다. Android lib에는 센서가 있습니다. 이미 취해진 조치를 계산할 수 있습니다. 어쨌든, 계단의 계산 방법은 중요하지 않습니다. – Daniel

+0

이전 질문에서 다음과 같이 말한 것으로 나타났습니다. http://stackoverflow.com/questions/35666127/difference-between-setandallowwhileidle-and-setexactandallowwhileidle- HTC와 삼성 모두의 테스트 프로세스를 설명 할 수 있습니까? –

답변

0

당신은이 같은 집행자로 이런 종류의 작업을 수행 할 수 있습니다

scheduler = Executors.newSingleThreadScheduledExecutor(); 

    scheduler.scheduleAtFixedRate 
      (new Runnable() { 
       public void run() { 
        // your stuff goes here 
       } 
      }, 0, 10, TimeUnit.SECONDS); 
+0

몇 가지 코드로 더 명확히 할 수 있습니까? – Daniel

+0

내가 원하는 코드를 제외하고 더 이상 코드가 필요 없다고 생각합니다. 코드는 중간 비트 (// 여기에있는 내용)에서 호출하는 코드를 실행합니다. 작성된 tt는 매 10 초마다 실행되지만 매개 변수 나 단위를 변경할 수 있습니다. –

0

내가 비슷한 무언가가 나의 접근 방식은 서비스 또는 서비스의 의도에이 문제를 처리하는 것입니다. 서비스 자체는 다음 번 실행을 위해 AlarmManager를 예약하므로 서비스가 시작될 때마다 인 텐트가 처리되고 결국에는 다음에 다시 알람이 설정됩니다.

Android가 반복적 인 알람이거나 일정이 서로 너무 짧으면 Android가이 방법을 너무 좋아하지 않는다는 것이 문제입니다. 15 분마다 실행되는 무언가를 가지고 있다면 괜찮습니다.

관련 문제