Another Doze Edge Case: Foreground vs. Foreground

Petr Nalevka has done a lot of work trying to make sense of some odd Doze mode behaviors on Android 6.0. In particular, he has nailed down one source of problems when trying to use a foreground service to bypass Doze mode.

A foreground service with a partial WakeLock is supposed to block Doze mode, presumably with an eye towards music players and the like. However, Mr. Nalevka discovered that if the process with the foreground service also has the foreground activity, Doze mode takes over again.

Dianne Hackborn’s recommended workaround is to split the foreground service out into a separate process. Since there doesn’t seem to be a way to link to specific G+ comments, you’ll need to scroll way down the comments list on this post to get to their exchange.