2016-10-03 36 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分钟左右运行一次,它就可以正常工作。

相关问题