Long requests to external systems such as storage, databases, hardware, and networks have always been difficult to handle from a user experience point of view. For programmers, it is easy to simply run the long request and, when finished (after seconds, minutes, or hours), inform the user that their data is there. However, we should think about user experience even more in the mobile world.
Do not block the main thread!
Getting ready
If your app runs a long-running request and the UI is frozen, the user might think that something is going wrong and start to tap here and there to try and unblock the app. After a few seconds, either the operating system itself will close the app, or the user will push the Home button to close...