I have a mobile app that automatically downloads user content from the Internet according to a schedule. Sometimes it might miss a scheduled update because the device wasn't connected to the Internet at the right time, or because it had the wrong kind of connection. (The app offers settings for what kind of connections to download from, e.g. Wi-Fi only.) When the device connects with the right kind of connection, my app gets notified about the network change, and performs any updates it missed while it was disconnected. It doesn't have to poll to find out about the network connection change.

The user can update the data immediately by clicking a button. When he does this, it ignores the network connection settings and performs the update if at all possible. The update still happens in the background, and it notifies the user of the result asynchronously. The question is, what if the device isn't connected to the Internet at the time? As I see it, there are four options:

  1. Ignore the manual update, and update the content at the scheduled time.
  2. Treat the manual update as a missed scheduled update, and update as soon as an acceptable network is connected.
  3. Update as soon as any network is connected. "Update now" means the user wants the content updated ASAP!
  4. (cop-out answer) Prompt the user and ask what he wants.

The fourth option is there because "ask the user" is always an option, but it's a bit of a weak option in this case: it means keeping the user there (e.g. with a modal progress bar) until we know whether the update has succeeded.

What behaviour will best match the user's expectation?

1 Answer 1


The answer depends on the amount of data a refresh would require.


If a user has already selected refresh, then they have already indicated their wish to have whatever it was refresh. So it makes sense that you refresh it when you are next able to, thus saving the user an additional button press.

The catch here is that you need to make sure that your notification message indicates this. So something like:

There is no internet connection right now, but as soon as it is available the content will be refreshed.


If the content that you will be refreshing is large, you shouldn't automatically download it, as people may be on capped 3G connections. In this case, it would be better to not automatically refresh and instead provide this message when they try refresh:

There is no internet connection right now. Please try again later.

Essentially you aren doing nothing automatically, but you are letting the user know that you will do nothing automatically, so their expectations are met.

Otherwise you would have to provide too many options, such as "refresh later only if on Wifi", and "refresh later regardless of connection type", and "don't refresh later".

As a side note, most mobile phones have a setting for "update on 3G" or "only update on wifi". This is an indication of updating an app, not on using the current internet connection for data. So I wouldn't use this as any indication of whether the user wants to refresh data in an app while connected to a 3G network. Otherwise there would be no point of a 3G network if you couldn't use it to download data.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.