1

I'm currently working on an app for the Android OS that displays some data. To ensure this data is up-to-date, it is required that the app fetches updates from a remote server from time to time. As the data does not change very often, this update should be carried out once per week. I want to give the user the ability to choose the weekday and daytime of the update (and optionally disable this feature completely).

The thing is: this update should be carried out even when the user is not using the phone at this moment, even when the phone is currently sleeping and even when the phone has been rebooted recently and the app hasn't been started yet.

The first thing I thought of was a remote service that starts at system boot, determines the time when to run the update, sets a timer and then waits/sleeps for the timer to fire.

Now, I was told I should rather use alarm timers or some kind of handlers... the more I read about this topic, the more ways to do this seem to exist.

Now, I'm a bit lost which method is the best for me... so here is what I need:

  • I want to execute some code at a time that is specified.
  • This timer is used to trigger the execution of code 7 days in the future. (i.e., every week at a given weekday and time)
  • The code should run WITHOUT waking the phone up if it is "sleeping" (screen dimmed).
  • When running the code, no activity should be started. i.e. no app pops up on the screen.
  • The code that is executed should fetch some data from the internet. If at this time no internet connection is available, the timer should be set to sleep 30 minutes and then try again.
  • After completing the code execution, the timer will be set for the next interval, which will be 7 days later.
  • The timer should be started at system boot, e.g., if I reboot the phone, the timer should determine the next date to execute the code and schedule the timer. This has to work without ANY user interaction! (i.e. without the app being started itself)
  • When "sleeping", the thread/service/timer/whatsoever should not consume any system resources if possible...
  • What i need is pretty much a simple unix cronjob.

    I think anyone here knows "newsrob" for android? What I want to realize is pretty much the same as the newsrob-updateservice.

  • gobernador
    • 5,659
    • 3
    • 32
    • 51
    xenonite
    • 1,671
    • 4
    • 28
    • 43

    1 Answers1

    2

    Android Service + Broadcast Receiver + Alarm Service will solve your purpose -

    Your service will be invoked from BroadCast Receiver and In Broadcast receiver you should register for various events - BOOT_RECEIVER , ACTION_USER_PRESENT , which will take care of your ALARM reset and update task.

    Thanks.

    Brijesh Thakur
    • 6,768
    • 4
    • 24
    • 29