2016-10-03 49 views
0

我想創建一個健身應用程序,該應用程序將監視我採取的步驟。我已經測試了近7天了,而我真的很努力做到這一點。創建一個在屏幕關閉時運行的應用程序

到目前爲止,我設法創建了在屏幕打開時運行的代碼,但是在1-3分鐘後屏幕關閉後它將停止運行。我的代碼每隔1分鐘或10秒或1秒簡單地保存一個字,我用全部3種配置進行測試。

我嘗試使用以下內容:

  • AlartManager(所有的差異報警)
  • WakefulBroadcastReceiver
  • 廣播接收器
  • 服務(StartForeground)
  • 喚醒鎖定
  • 加我應用程序添加到白名單中,以便三星設備上的「打盹模式」不會干擾。
  • 要描述完全由電池優化

我得到了我的電腦超過10個不同的例子預製棒刪除應用程序,所有的人。所以我會嘗試一種不同的方法,並提出一個簡單的直接問題。

測試設備

HTC M8一款使用Android操作系統V6.0.1

三星Galaxy S6邊緣的Android V6.0.1

問題

我要的是一個可以運行的代碼當屏幕是黑色的時候,也是30分鐘以上。不只是1-3分鐘。它似乎比平衡一個手指更具挑戰性:-)

任何人都可以幫我一些代碼,以便我可以在正確的方向?

對不起,在這個問題上沒有張貼實際的代碼,我覺得這是不恰當的,因爲我嘗試過這麼多東西,這個帖子是67個滾動長:-)

此前問題

如果你想看到一些我之前創建的代碼,以便獲得我想要的內容是一篇文章。 Android OS shuts down the Wakelock + AlarmManager after a few minutes

+0

你可以通過'steps'來定義你的意思嗎?基於用戶身高和距離的計算值是否已移動或實際計數加速計中的變化? –

+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不太喜歡這種方法,如果它是重複鬧鐘,或者如果時間表彼此之間太短。如果您每15分鐘左右運行一次,它就可以正常工作。

相關問題