Reputation: 803
My iOS app is using asynchronous download to read data from the internet. So I have events: started, done, error.
Question is about User Experience. When data is downloading user sees Activity Indicator and I block all UI
Question is if blocking UI is a good practice?
Upvotes: 1
Views: 297
Reputation: 12243
I'm working on an app with a similar use case: when we connect to a given system there is an XML file describing it that we must download (which is done asynchronously). Until that XML has downloaded, there's nothing the user can do with said system, and there's nothing else for the user to do (except open another system, but that's the same issue). In that case, a blocking spinner shows up in the app.
However, there are some cases where the XML won't be updated, and we can check a timestamp for that. If we don't need to update it, we don't, and the user sees no blocking spinner.
Another app that does this is Sonos - they have a blocking spinner while searching for a wireless network (with one of their systems) because they can't do anything without that connection.
Note that in both of these examples the user can still leave the app, they just can't act in the app.
Basically this ends up being: don't block the user unless they can do nothing until the request has finished.
Upvotes: 1
Reputation: 18551
If you're downloading the data asynchronously then there is very little reason to block the UI since you went through the trouble to unblock it.
If there is a particular function you HAVE to block because it needs the data go ahead. But everything else should be free and responsive as normal.
Upvotes: 0