$30 off During Our Annual Pro Sale. View Details »

Building Apps for Billions

Building Apps for Billions

Deliver the best performance across a range of connections, data plans, and devices.

With GIF - [ https://goo.gl/YwkQ6M ]

Nishant Srivastava

August 07, 2016

More Decks by Nishant Srivastava

Other Decks in Technology


  1. Building Apps for Billions - Nishant Srivastava

  2. Nishant Srivastava • Software Engineer @Omni Labs, Inc. • Lead

    Organizer @Google Developer Group,New Delhi • Blog : Crushing C.O.D.E [ www.crushingcode.co ] • Twitter : @nisrulz • Github : https://github.com/nisrulz • About.me Hello, my name is
  3. Daily Challenges Complex UI/UX Low end and different devices Poor

  4. Problem : Your user cry when using your app as

    the UI is very complex
  5. Simplify UI/UX • Use colors well • Use icons with

    text • Keep interactions minimal • Include localization • Make app UI responsive and fast
  6. Seamless Connectivity Optimize Images 1. Serve webp 2. Dynamic Image

    sizes 3. Use image loading libraries such as Glide, Picasso, etc. 4. Cache images
  7. Problem : We all hate slow internet...to a point ...

  8. Seamless Connectivity Finetune Transfer • Prioritize bandwidth • Detect network

    changes • Detect Network speed and change behaviour using that information • Make app useable when offline • Use Stetho tool by Facebook to help you do analysis.
  9. Seamless Connectivity Network Connection Class Listen to current network traffic

    in the app and categorize the quality of the network. Developed by Facebook. https://github.com/facebook/network-con nection-class
  10. Seamless Connectivity EasyDeviceInfo https://github.com/nisrulz/easydeviceinfo Get network type by using ..to

    get what kind of a network it is 1. Wifi/WifiMax 2. Cellular - 2G/3G/4G easyNetworkMod.getNetworkType();
  11. Problem : ...when some app finished up all your data

    and you are only halfway through the month...
  12. Conserve Data Usage • Reduce your app size to reduce

    data costs • Offer configurable network usage. i.e Download only over unmetered network
  13. Right Content for right context Download content which is visible,

    actionable and only when it is required.
  14. Problem : ...when you try to code for just one

    type of device ...
  15. Optimize for Devices • Support varying screen sizes • Backward

    Compatible • Efficient memory usage • Less CPU hogging
  16. Problem : When you see that “Low Battery” warning ....

  17. Reduce battery consumption • Reduce background tasks when device is

    running on battery power • Avoid holding wakelocks. • Batch networking calls -Use GCM Network Manager • Manage GPS via FusedLocationProvider • Minimise sensor usage and updates
  18. Reduce battery consumption EasyDeviceInfo https://github.com/nisrulz/easydeviceinfo Get battery status via the

    EasyBatteryMod ..to make a better decision as to when you need to run your jobs.. easyNetworkMod.getBatteryPercentage(); easyNetworkMod.isDeviceCharging(); easyNetworkMod.getChargingSource();
  19. Reduce battery consumption Use Battery Historian to benchmark battery usage

    More detailed information in my other presentation here
  20. ..and when you still have battery left towards the end

    of the day..
  21. References https://android-developers.blogspot.in/2016/06/building-for-billions.html https://developer.android.com/distribute/essentials/quality/billions.html#conn ectivity

  22. None