elchuppa
elchuppa

Reputation: 53

Timer appears to be pausing when screen becomes inactive

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

Upvotes: 2

Views: 757

Answers (1)

CommonsWare
CommonsWare

Reputation: 1007296

I was a bit surprised by this.

When the screen goes off, the CPU shuts down shortly thereafter. Your user of Timer has nothing to do with it, as that's a Java thing, not an Android thing.

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 highly doubt that.

am I seeing expected behavior?

Yes.

Do I need to create all timers as services or somehow disallow powersaving?

If you have an activity that must keep the screen and device on, use:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

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 AlarmManager and an IntentService, perhaps a WakefulIntentService.

There are other possibilities as well, but I don't know what you're trying to build.

Upvotes: 3

Related Questions