So I have a very simple android activity that starts a timer when you hit a button.
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
doStuff();
}
}, 15 * 60 * 1000);
So this worked reasonably well for me when I was testing but as it turns out when the screen becomes inactive so does the timer. I was a bit surprised by this. I understand you need to create a service to have anything running in the background but I hadn’t realized this is required for an activity in the foreground when the phone has inactivated the screen due to lack of activity. What confuses me is I think this worked as I expected originally and just in the last few weeks or so has the timer been affected by the phone saving power. I could be wrong though..
So basically my questions are: am I seeing expected behavior? Do I need to create all timers as services or somehow disallow powersaving?
thanks for any advice,
Patrick
When the screen goes off, the CPU shuts down shortly thereafter. Your user of
Timerhas nothing to do with it, as that’s a Java thing, not an Android thing.I highly doubt that.
Yes.
If you have an activity that must keep the screen and device on, use:
However, this should be for something like a video player.
If you are trying to do something more like a Windows scheduled task or Linux cron job, you will want to use
AlarmManagerand anIntentService, perhaps aWakefulIntentService.There are other possibilities as well, but I don’t know what you’re trying to build.