我有一个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分钟醒来时间吗?
答案 0 :(得分:1)
仅在屏幕关闭时才会发生打盹,并且已经持续了一段时间。它与背景无关。
此外,服务设置的定时器或线程不会被自动取消,因为1)操作系统不了解它们; 2)无法知道它是否安全这样做,或者如果这样做会导致死锁或其他错误。它们可能被推迟到Doze允许的执行率,但不会被停止。