Data costs. As an app owner your attempt to impress users may end after you are done developing a fabulous app, but for the end users it actually begins from the moment they start downloading your app. If your app consumes too much of download space and does not give users any control over data utilization it can create a negative impact on the users, irrespective of how fabulous your app is.

Data cost is one of the important aspects that several app developers tend to overlook while launching their apps. By minimizing download size and allowing the users to have some control how your app utilizes data you can effectively create a tangible benefit your end users.

Here are some of the Android strategies you can apply to reduce data costs for all your app users.


Reduce App Size


By reducing the app size you naturally reduce your users’ data (network data and internal storage) consumption. Here are a few effective methods you can slide in to reduce the app size.

Reduce the code size

*Unused files are inevitable byproducts of app development, but detecting them is what matters. Every library used in your project will most likely add unused code to the APK. This is more often the case with external libraries. Check for these unused code and ensure these libraries are optimized for mobile use.

*Leverage tools to identify unused codes. ProGuard is one such tool, which helps in identifying and removing unused codes from your APK. Also, you can enable resource shrinking at build time by setting minifyEnabled=true , shrinkResources=true in build.gradle to remove unused resources from your APK.

*When using Google Play services include only the relevant API into your APK.

*For additional information on reducing code size check out the Android training on avoiding dependency injection frameworks.


Reduce APK graphical asset size

*Graphical assets are known to contribute (add) to the size of APK. So, to overcome this challenge it is imperative to optimize graphical assets for a faster and reduced download size and faster installations.

*When using icons, opt for SVG format. They are small in size compared to bitmap and can be rendered at runtime to any resolution. It is important to note that Android Support Library provides backward-compatible implementation facility resources to Android 2.1.

*While using large images across multiple densities consider Multiple APK support to split up the APK by density.

*While using non-vector images (like photos) consider WebP, as they are known to reduce image load times and save network bandwidth. WebP also results in smaller file size than PNG and JPG, while maintaining the same image quality.


Allow users to move the app to External Storage (SD)

*Since on-device storage is a challenge in low cost devices users tend to use SD cards. Allow the app to be moved to SD storage by using android:installLocation flag in the AndroidManifest.xml. For more information, check out this Android guide.


Reduce the post-install app disk use

Users are very particular about post-install app disk space usage. If your app consumes more disk space, it runs the risk of being uninstalled when users’ device disk space runs low.

*Since app’s disk usage tend to grow indefinitely, it is important to set bounds around your cache. Make sure you put your cached data in getCacheDir() – the system can delete files placed here as an when needed, also they won’t show up as storage committed to the app.


Give users control over your app’s network use


Giving control over the application’s network usage can strengthen the trust factor among users. Android platform offers several approaches to help developers achieve this, such as: educating users about the variety of network-related settings and providing network preferences screen from outside the app.

Educating users about the variety of network-related settings

*Not all apps are light, or use limited data requirements. If your app demands heavy data requirements, or uses large amount of bandwidth like video streaming etc., it is important to allow users to configure network usage. For example, letting them stream lower bit-rate videos on cellular networks.

*Give users the advantage of customizing the apps’ behavior to suit their needs. Provide them settings to control data syncing, network use behavior, and pre-fetching.

*For more information on managing network usage in Android, check out this training guide on Managing Network Usage.


Provide network preferences screen from outside the app

*Through the network preferences screen, you can navigate to the app’s network settings from outside the app. You can trigger this screen from either system settings screen, or the system data usage screen.

*In order to provide users with a network preferences screen, which can be accessed from within your app as well as from the system settings, include an activity in your app that supports the ACTION_MANAGE_NETWORK_USAGE action.

*For more information on adding a network preferences screen, check out this detailed Android guide on Implementing a Preferences Activity.




Ideaplunge is one of the fast-growing technology solution providers in today’s IT landscape, with proficiency in Mobile app development, UI/UX Designing, Dashboard & Analytics. It has offered ingenious solutions to Startups and Fortune 500 companies in fueling their growth and transforming their businesses. It caters to major industry verticals like Retail, Healthcare, Social, Fashion and Lifestyle, and has esteemed clientele spread across seven countries.

Need assistance for your Android project? Drop us a line at

Leave a Reply

Your email address will not be published. Required fields are marked *