打瞌睡不限制服务

时间:2018-06-06 19:12:53

标签: android

我有一个Service每隔10秒显示一次祝酒,但是当我在应用程序没有列入白名单时,我会预期Doze会将其减慢到每15分钟一次。这是我的服务:

@Override
public void onCreate() {
    super.onCreate();

    if (mTimer != null)
        mTimer = null;

    // Create new Timer
    mTimer = new Timer();

    // Required to Schedule DisplayToastTimerTask for repeated execution with an interval of `2 min`
    mTimer.scheduleAtFixedRate(new DisplayToastTimerTask(), TIMER_DELAY, TIMER_INTERVAL);
}

...
private class DisplayToastTimerTask extends TimerTask {

    @Override
    public void run() {

        mHandler.post(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(getApplicationContext(), "Hello world", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

我在模拟器中得到的是即使我在主屏幕上也会每隔10秒显示一次吐司。不打瞌睡将所有非白名单背景服务/应用程序限制为15分钟醒来时间吗?

1 个答案:

答案 0 :(得分:1)

仅在屏幕关闭时才会发生打盹,并且已经持续了一段时间。它与背景无关。

此外,服务设置的定时器或线程不会被自动取消,因为1)操作系统不了解它们; 2)无法知道它是否安全这样做,或者如果这样做会导致死锁或其他错误。它们可能被推迟到Doze允许的执行率,但不会被停止。