Take the 2-minute tour ×
User Experience Stack Exchange is a question and answer site for user experience researchers and experts. It's 100% free, no registration required.

In a mobile application you almost always make some sort of api call to fetch data to populate view elements on a screen. Say I am on a home screen (screen A) and want to transition to a profile screen (screen B). Should I load the data for screen B on screen A (fetch data for B on button tap on screen A... loading dialog would be displayed)? Or should I transition to B, show a loading dialog, populate data, and dismiss loading dialog.

I've always done the latter, but my only reasoning for doing so is to keep screens and data modular (disclaimer: only Android experience here). This saves me from the headache of passing the fetched data to the screen that's actually using it or saving it in a globally accessible class.

Thoughts?

share|improve this question
add comment

2 Answers

up vote 6 down vote accepted

If someone performs an action (usually selecting a button / icon), you should respond to that action as fast as you can. What that response is may vary, but if you delay responding while you get some data, it will appear that your app is sluggish and the person may think that the action wasn't recognised.

Now, how you respond depends very much on your app. If the icon were supposed to load a video, it would be fine to immediately change to the screen where they would see the video and then show some loading video animation. At least then they know that their action was responded to.

If it were a list and you are loading more elements, then you can easily show a loading animation at the bottom (or top if they are scrolling up) letting them know that you are fetching new elements.

There are many more examples, but I won't go through them all. In short, you should respond immediately, but the type of response should be suited to the application.


An exception is where you know before an action is triggered what data you will need to show your customer. In that case, you should load the information in the background so that you can respond as fast as possible without making them wait for anything.

Instagram does this by starting the upload of an image before any filters or effects are added to an image. This makes their upload seem a lot faster than it really is.

share|improve this answer
1  
Thanks! I like the response and the reasons behind it. I'm going to leave the question open for a bit longer to see what other thoughts are out there. –  loeschg Mar 15 '13 at 18:34
add comment

As an alternative take or answer to the one given by JohnGB, I would make the api call to fetch the data for screen B while still on screen A and present the user with a preferably subtle indication (loading indicator or dialog) that their request is being worked on. By subtle I mean I tend to prefer displaying the loading indicator on the control if possible.

The reason for choosing this route is one of flexibility. By not transitioning to page B right away and forcing them into viewing an incomplete "view" or some mundane loader, you still give them the option to do some activity on page A or change their minds all together. I prefer to leave these kinds of options open.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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