手机处于睡眠/待机模式时,Android App失去声音/定时

时间:2019-01-27 19:20:25

标签: android mobile-application sleep-mode

几年前,我编写了一个android应用程序,该过程相当简单。我建立了一个由不同步伐(步行,慢跑,冲刺)组成的条件系列,每个分段的时间分别为:步行1分钟,工作2分钟,冲刺3分钟。当我按下执行按钮时,该应用将为每个分段显示一个倒数计时器,一个完整的计时器和速度(使用GPS)。有一个显示屏,但是主要功能是该应用使用声音告诉我很长时间,直到下一次转换以及接下来会发生什么。

例如,启动时每秒发出一声声音,持续5秒,然后说“ 2分钟”。在30秒标记处将发出声音。在1分钟时会说“ 1分钟”,在30秒时会发出另一种声音,然后在改变速度之前的10秒时会说“下一条腿(慢跑)(或步行或冲刺)”,并在最后5秒钟播放声音。这样,我无需查看显示屏即可知道我在创建的条件程序中的位置。

问题:当我创建并运行它时,我正在运行两个版本的Android(目前拥有的版本为8.1.0),现在我在LG Stylo 4上运行它。那时该设备将进入睡眠/待机模式下,屏幕自动变黑,或者我按下电源按钮,应用程序将继续正常运行。时间会减少,声音会准时发出。

这是我第一次在新的手机/操作系统上安装并运行我的应用程序,并且说运行不顺利。在某一点上,我虽然还剩30秒钟,但一分钟没听到任何声音。看来该应用现在已经暂停了一半,例如30秒变成了1分钟以上,并且过渡时没有声音。

Android发生了一些变化,在以前的版本中似乎没有发生。我想要的是让程序在设备切换到睡眠模式时保持实时运行,同时我读到有关从节电模式中排除该应用程序的信息,但这没有用。

即使手机处于睡眠模式,我仍可以通过什么方式使该应用程序在后台运行,倒计时并发出声音。

  • 操作系统版本为8.1.0
  • 内核3.18.71
  • 构建OPM1.171019.019
  • 设备:LM-Q710TS(LG Stylo 4)

有问题的特定代码是这样:

    //runs without a timer by reposting this handler at the end of the runnable
Handler timerHandler = new Handler();
Runnable timerRunnable = new Runnable() {

    @Override
    public void run() {

        // do something here to display

        processTime();    // process what to be done on a sec by sec basis
        try {
            timerHandler.postDelayed(this, 1000);
        } catch (Exception ex){

        }

    }
};

我看到了使用部分唤醒锁或其他定时器版本的帖子,但现在找不到。希望对这个难题有一个直接的答案。

0 个答案:

没有答案