Slide 1

Slide 1 text

Building Apps for Billions - Nishant Srivastava

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

Daily Challenges Complex UI/UX Low end and different devices Poor Infrastructure

Slide 4

Slide 4 text

Problem : Your user cry when using your app as the UI is very complex

Slide 5

Slide 5 text

Simplify UI/UX ● Use colors well ● Use icons with text ● Keep interactions minimal ● Include localization ● Make app UI responsive and fast

Slide 6

Slide 6 text

Seamless Connectivity Optimize Images 1. Serve webp 2. Dynamic Image sizes 3. Use image loading libraries such as Glide, Picasso, etc. 4. Cache images

Slide 7

Slide 7 text

Problem : We all hate slow internet...to a point ...

Slide 8

Slide 8 text

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.

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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();

Slide 11

Slide 11 text

Problem : ...when some app finished up all your data and you are only halfway through the month...

Slide 12

Slide 12 text

Conserve Data Usage ● Reduce your app size to reduce data costs ● Offer configurable network usage. i.e Download only over unmetered network

Slide 13

Slide 13 text

Right Content for right context Download content which is visible, actionable and only when it is required.

Slide 14

Slide 14 text

Problem : ...when you try to code for just one type of device ...

Slide 15

Slide 15 text

Optimize for Devices ● Support varying screen sizes ● Backward Compatible ● Efficient memory usage ● Less CPU hogging

Slide 16

Slide 16 text

Problem : When you see that “Low Battery” warning ....

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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();

Slide 19

Slide 19 text

Reduce battery consumption Use Battery Historian to benchmark battery usage More detailed information in my other presentation here

Slide 20

Slide 20 text

..and when you still have battery left towards the end of the day..

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

No content