I am currently working on an Android app which needs to download some files (mostly graphics) from a server on the first launch. The reason for this is to keep the graphics out of the application file (apk) because I don't want to have low end phones download high resolution graphics which would never be used. In face I do not want to pack multiple resolution files into the apk. The size of the download would be 20 - 60mb depending on the screen resolution (higher screen resolution -> bigger files)
Once the app is started the user needs to register and/or login in order to use the app. Once the user is logged in the mentioned files are needed. I came up with multiple solutions to show the user whats going on:
- Right after the login the application notifies the user that some files need to be downloaded and maybe recommends to connect to a wifi network. Once this is confirmed a loading animation / progress bar shows how long it will take to finish the download.
- BEFORE the user logs in the application notifies the user that files need to be downloaded. Once this is confirmed the files get downloaded while the user registers / logs in which would reduce the waiting time since the user is distracted as long as he enters his username / password. If the download takes too long the loading animation / progress bar from solution 1 is displayed.
- I deliver some low resolution 'default' graphics with the app (packed into the application file (apk)) which can be shown while the higher resolution files are downloaded in the background. This would cause the application to not look as good as it should until the graphics are downloaded but it would be usable from the beginning without any waiting time. Maybe a static notification is shown somewhere in the app to inform the user that high res files are being downloaded.
The problem I have is: which of the mentioned solutions would be best? Or am I completely wrong with my ideas and I should think of another approach?