Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Clarification of AlarmManager behavior in Android

I see all the examples of AlarmManager being set by an Activity.

My question is this: If my application sets a recurring AlarmManager, does that persist even after the application that started is is closed and removed from memory?

If not, how do I start an AlarmManager at a lower level that is started by Android at boot up and if it ever fails or dies or throws an exception is restarted without the user having to do anything?

Lastly, if the action I wish for the BroadcastReceiver to undertake has no visual components, do I still have to create a separate Activity for it? In my case I want there to be a background uploader that wakes up and looks into a folder and if it sees files in that folder, sends them off to the server. I don't need any feedback to the user.

So, my ideal would be to have a magical, OS based AlarmManager that calls an IntentService which just handles the uploading, but I'm unclear on how to get such an AlarmManager running in the first place.

TIA

like image 231
Yevgeny Simkin Avatar asked Feb 21 '11 23:02

Yevgeny Simkin


People also ask

What is Android permission schedule exact alarm?

What is this permission? The new exact alarm permission ( SCHEDULE_EXACT_ALARM ) was created to save system resources. Alarms that must be executed in an exact time may be triggered when the phone is on power-saving mode or Doze, making the app consumes more battery than it should.

What is exact alarm API?

These kinds of alarms — called exact alarms — have the ability to bring the device out of “Doze mode,” one of Android's core battery-saving restrictions.


1 Answers

Yes, AFAIK the alarms "survive" and keeps getting triggered, even after the activity that registered them ends. But they don't survive a phone reboot.

If I understands your problem correctly, I think you can achieve what your looking for by creating a project with a broadcast receiver that listens for android.intent.action.BOOT_COMPLETED intents and then (re-)register a repeating alarm, which in turns starts a (Intent)Service to do the uploading.

You don't need an activity, but you probably would want one anyway, to let the user temporarily disable the upload mechanism by checking off a checkbox, or something. It would probably also be nice to let the user choose the frequency of your alarm, i.e. how often the service should be started and look for new files to upload. This would also be a good place to register your alarm for the first time.

like image 162
Nicolai Buch-Andersen Avatar answered Sep 20 '22 22:09

Nicolai Buch-Andersen