SlideShare a Scribd company logo
From good to awesome
Making awesome apps
Making awesome apps
Always up to date
Users don't like to wait.
Location updated.
Data downloaded from web.
Always up to date
Users don't like to wait.
Location updated.
Data downloaded from web.
Find the location fast.
Loop through all providers->getLastKnownLoc.
If there is one or more location which is recent enough –
return the most accurate one
If not – Return the latest one.
In case of #2 – look for “fastest” provider:
Coarse Accuracy && low power consumption.
Register for location update.
Fused Location
Define your priorities
Let Google play services do the heavy lifting.
Using fused location
Data updates
The challenges:
When to update?
Where the data is coming from?
What to update?
How to update?
When to update my App?
Right before the user launches it
Assuming I have battery.
Assuming I have BW.
Where the data is coming from?
My Server
3rd Party Servers
Where the data is coming from?
My Server
3rd Party Servers
Content Segmentation -What to Update?
What's Hot
Interesting stuff
Other
BG Update
What's Hot
BG Update
Interesting
Stuff
Other
BG Update
What's Hot
BG Update
Interesting
Stuff
Other
GCM
Embedded
BG Update
What's Hot
BG Update
Interesting
Stuff
Other
GCM
Embedded
GCM +
Back-off
BG Update
What's Hot
BG Update
Interesting
Stuff
Other
GCM
Embedded
GCM +
Back-off
Daily /
Bundled
Updating Data from 3rd
party servers
Monitor the device
Use Variable alarms.
Use conditional services and receivers.
Monitor the user
Is it worth waking up?
Set wake alarm for min update freq.
Set non-wake alarm for optimal update freq.
Monitor device State
Change the refresh rate based on device state:
Update without connectivity?
Update more on WiFi?
Update more when charging?
Suspend updates on low battery?
Update more when docked?
Don't update in car dock?
Monitor connectivity
Monitor Battery
Monitor State canged BCAST
Monitor the user
Change your behavior based on the user's acitivty
Update more when driving?
Update more when walking?
Pause updates while cycling?
Activity recognition
Activity recognition
Activity recognition
Making awesome apps
Being Invisible
I don't need to think how the app works.
I never notice the app's work.
I am never being bothered by the app.
Work Offline
Queue and Send transactions.
Use persistence layer.
Tape From Square.
Work Semi-Offline
Be resilient to poor networks.
Prioritize your transactions.
Be able to cancel transaction on the fly, or clear the Queue.
Adjust your apps behavior and timeouts accordingly.
Use Volley
Use sync adapter to... sync
Sync adapter is great for sending data from the device
to your server
Has a system wide POV.
Poor documentation, Hard to implement.
Be efficient – Data usage
Making awesome apps
Radio State Machine
IDLE
FACH
DCH
Power
~10Sec tail time
~12-75 Sec tail time
Bandwidth
IDLE
FACH
DCH
Power
~10Sec tail time
~12-75 Sec tail time
~2 Sec
Bandwidth
Radio State Machine
Avoid bursty traffic
Transmit data “together”.
Piggyback if needed.
Pre-fetch data for the next 2-5 minutes.
Don't ping just to keep TCP connection alive
RRC != TCP Connection.
TCP connection is kept even in IDLE mode
#1: Case study: Pandora
Music file streamed as single file.
Analytics data sends ~2KB every 62.5 seconds
Source: AT&T research
#1: Case study: Pandora
0.2% of data consumed 46% of energy!
Don't be HTTP rookie
Don't download what you already have.
Take care of server headers
Max-age, expires.
Use conditional GET when cache expires
Use “last modified” header.
Server return 304, with no body.
Don't be lazy
Read AT&T research:
Top Radio Resources Issues in Mobile Applications
AT&T Lab Research – call for more efficient apps
Watch my latest reversim talk (video / slides )
Use ARO.
Developed by AT&T.
Monitors and analyze network activity.
http://developer.att.com/
https://github.com/attdevsupport/ARO
Making awesome apps
Adaptive App
Optimized for different User Experience.
User has more than one device.
Be predictable.
Behave as expected
Text Input
Specify the Edit Text input to show the right keyboard
type.
use android:inputType attribute
Four classes of keyboards:
Plain text
Decimal Number
Phone Number
Date or Time
Text Input
Plain text types:
URIs
Email address
People's names
Postal address
Passwords
Making awesome apps
Context is critical
Activity recognition
Location
GeoFencing
Personal
G+ SSO
Login once – on all of your devices.
Track the user, not the device
Making awesome apps
Geek Magic – Text to Speech
Geek Magic – Text to Speech
Geek Magic – Text to Speech
Geek Magic – Speech Recognition
Geek Magic – Speech Recognition
More than one result is returned.
Loop through all results, taking context in mind.
Summary
By Fresh
Be Invisible
Be Efficient
Be Adaptive
Be psychic
ran@mobiliup.com
+Ran Nachmany
Thank You

More Related Content

ODP
Android advanced client architecture
ODP
Android Pro Tips - IO 13 reloaded Event
ODP
Androd rest client architecture
PPT
How to Drive Down iSeries Computing Costs
ODP
Monitoring HOWTOs
PPT
Network Monitoring Webcast
PPTX
Demystifying Apache Spark
PPTX
Aero app updates how to v1.1510.12
Android advanced client architecture
Android Pro Tips - IO 13 reloaded Event
Androd rest client architecture
How to Drive Down iSeries Computing Costs
Monitoring HOWTOs
Network Monitoring Webcast
Demystifying Apache Spark
Aero app updates how to v1.1510.12

What's hot (6)

PPTX
Android Battery optimization Android Apps
PPTX
Development of horse heart beat sensor application sample from Topup Writer- ...
PPTX
How to do Memory Optimizations in Android
PDF
Lambda and DynamoDB best practices
PPTX
Insight Data Science Final Presentation for Active Me - Lois Smith
PDF
Low Latency Fraud Detection & Prevention
Android Battery optimization Android Apps
Development of horse heart beat sensor application sample from Topup Writer- ...
How to do Memory Optimizations in Android
Lambda and DynamoDB best practices
Insight Data Science Final Presentation for Active Me - Lois Smith
Low Latency Fraud Detection & Prevention
Ad

Viewers also liked (13)

PDF
Custom Watchfaces, Remote Verification and SmartEyeglass concept
PDF
HTML5 App Skills for Android Developers
PPTX
Student Box
PPTX
How to Hybrid : Effective Tactics in HTML5-Native App Development
PPTX
Cs writing introductions for breo
PDF
Work shareing documents
DOC
Arpit Joshi new
PDF
Cam nang danh cho ky su dia ky thuat
PPTX
Android UI Tips & Tricks
PDF
tinh toan thuc hanh câu kien be tong cot thep 1
PPSX
Presentation2
PDF
Smart Glasses, Augmented Reality
PDF
Cognitive interaction using Wearables - Eyal herman, IBM
Custom Watchfaces, Remote Verification and SmartEyeglass concept
HTML5 App Skills for Android Developers
Student Box
How to Hybrid : Effective Tactics in HTML5-Native App Development
Cs writing introductions for breo
Work shareing documents
Arpit Joshi new
Cam nang danh cho ky su dia ky thuat
Android UI Tips & Tricks
tinh toan thuc hanh câu kien be tong cot thep 1
Presentation2
Smart Glasses, Augmented Reality
Cognitive interaction using Wearables - Eyal herman, IBM
Ad

Similar to Making awesome apps (20)

PDF
How to Lower Android Power Consumption Without Affecting Performance
PPT
Fanug - Pragmatic Windows Phone Developer
PPTX
Is your mobile app up to speed softwaresymposium
PPT
What's New with Windows Phone - FoxCon Talk
PDF
Android Power Optimization: May the Power be with you
PPTX
Open stack gbp final sn-4-slideshare
PDF
Beyond Traditional Mobile Testing
PDF
Java Full Stack Interview Questions – 3 to 5 Years.pdf
PDF
Java Full Stack Interview Questions – 3 to 5 Years.pdf
PDF
Google Cloud Next '22 Recap: Serverless & Data edition
PDF
Android pro tips trilogy
PDF
Efficient data transfer in Android
PPTX
Why Progressive Web Apps For WordPress - WordCamp Finland
PDF
Headaches and Breakthroughs in Building Continuous Applications
PPTX
Spark + AI Summit 2019: Headaches and Breakthroughs in Building Continuous Ap...
PPT
Incorporating Web Services in Mobile Applications - Web 2.0 San Fran 2009
PPTX
Why progressive apps for WordPress - WordSesh 2020
PPT
Azure & WP7 at GRDevDay
PPSX
Transcend Automation's Kepware OPC Products
PPT
Azure + WP7 - CodePaLOUsa
How to Lower Android Power Consumption Without Affecting Performance
Fanug - Pragmatic Windows Phone Developer
Is your mobile app up to speed softwaresymposium
What's New with Windows Phone - FoxCon Talk
Android Power Optimization: May the Power be with you
Open stack gbp final sn-4-slideshare
Beyond Traditional Mobile Testing
Java Full Stack Interview Questions – 3 to 5 Years.pdf
Java Full Stack Interview Questions – 3 to 5 Years.pdf
Google Cloud Next '22 Recap: Serverless & Data edition
Android pro tips trilogy
Efficient data transfer in Android
Why Progressive Web Apps For WordPress - WordCamp Finland
Headaches and Breakthroughs in Building Continuous Applications
Spark + AI Summit 2019: Headaches and Breakthroughs in Building Continuous Ap...
Incorporating Web Services in Mobile Applications - Web 2.0 San Fran 2009
Why progressive apps for WordPress - WordSesh 2020
Azure & WP7 at GRDevDay
Transcend Automation's Kepware OPC Products
Azure + WP7 - CodePaLOUsa

More from DroidConTLV (20)

PDF
Mobile Development in the Information Age - Yossi Elkrief, Nike
PDF
Doing work in the background - Darryn Campbell, Zebra Technologies
PDF
No more video loss - Alex Rivkin, Motorola Solutions
PDF
Mobile at Scale: from startup to a big company - Dor Samet, Booking.com
PDF
LiveData on Steroids - Giora Shevach + Shahar Ben Moshe, Climacell
PDF
MVVM In real life - Lea Cohen Tannoudji, Lightricks
PDF
Best Practices for Using Mobile SDKs - Lilach Wagner, SafeDK (AppLovin)
PDF
Building Apps with Flutter - Hillel Coren, Invoice Ninja
PDF
New Android Project: The Most Important Decisions - Vasiliy Zukanov
PDF
Designing a Design System - Shai Mishali, Gett
PDF
The Mighty Power of the Accessibility Service - Guy Griv, Pepper
PDF
Kotlin Multiplatform in Action - Alexandr Pogrebnyak - IceRockDev
PDF
Flutter State Management - Moti Bartov, Tikal
PDF
Reactive UI in android - Gil Goldzweig Goldbaum, 10bis
PDF
Fun with flutter animations - Divyanshu Bhargava, GoHighLevel
PDF
DroidconTLV 2019
PDF
Ok google, it's time to bot! - Hadar Franco, Albert + Stav Levi, Monday
PDF
Introduction to React Native - Lev Vidrak, Wix
PDF
Bang-Bang, you have been hacked - Yonatan Levin, KolGene
PDF
Educating your app – adding ML edge to your apps - Maoz Tamir
Mobile Development in the Information Age - Yossi Elkrief, Nike
Doing work in the background - Darryn Campbell, Zebra Technologies
No more video loss - Alex Rivkin, Motorola Solutions
Mobile at Scale: from startup to a big company - Dor Samet, Booking.com
LiveData on Steroids - Giora Shevach + Shahar Ben Moshe, Climacell
MVVM In real life - Lea Cohen Tannoudji, Lightricks
Best Practices for Using Mobile SDKs - Lilach Wagner, SafeDK (AppLovin)
Building Apps with Flutter - Hillel Coren, Invoice Ninja
New Android Project: The Most Important Decisions - Vasiliy Zukanov
Designing a Design System - Shai Mishali, Gett
The Mighty Power of the Accessibility Service - Guy Griv, Pepper
Kotlin Multiplatform in Action - Alexandr Pogrebnyak - IceRockDev
Flutter State Management - Moti Bartov, Tikal
Reactive UI in android - Gil Goldzweig Goldbaum, 10bis
Fun with flutter animations - Divyanshu Bhargava, GoHighLevel
DroidconTLV 2019
Ok google, it's time to bot! - Hadar Franco, Albert + Stav Levi, Monday
Introduction to React Native - Lev Vidrak, Wix
Bang-Bang, you have been hacked - Yonatan Levin, KolGene
Educating your app – adding ML edge to your apps - Maoz Tamir

Recently uploaded (20)

PDF
Assigned Numbers - 2025 - Bluetooth® Document
PPTX
Chapter 5: Probability Theory and Statistics
PDF
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
PPTX
Tartificialntelligence_presentation.pptx
PPTX
observCloud-Native Containerability and monitoring.pptx
PPTX
TLE Review Electricity (Electricity).pptx
PDF
A comparative study of natural language inference in Swahili using monolingua...
PDF
Getting Started with Data Integration: FME Form 101
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
Getting started with AI Agents and Multi-Agent Systems
PDF
Hybrid model detection and classification of lung cancer
PDF
Web App vs Mobile App What Should You Build First.pdf
PPTX
cloud_computing_Infrastucture_as_cloud_p
PPTX
The various Industrial Revolutions .pptx
PPTX
Final SEM Unit 1 for mit wpu at pune .pptx
PPT
What is a Computer? Input Devices /output devices
PDF
DP Operators-handbook-extract for the Mautical Institute
PDF
1 - Historical Antecedents, Social Consideration.pdf
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PPTX
Modernising the Digital Integration Hub
Assigned Numbers - 2025 - Bluetooth® Document
Chapter 5: Probability Theory and Statistics
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
Tartificialntelligence_presentation.pptx
observCloud-Native Containerability and monitoring.pptx
TLE Review Electricity (Electricity).pptx
A comparative study of natural language inference in Swahili using monolingua...
Getting Started with Data Integration: FME Form 101
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
Getting started with AI Agents and Multi-Agent Systems
Hybrid model detection and classification of lung cancer
Web App vs Mobile App What Should You Build First.pdf
cloud_computing_Infrastucture_as_cloud_p
The various Industrial Revolutions .pptx
Final SEM Unit 1 for mit wpu at pune .pptx
What is a Computer? Input Devices /output devices
DP Operators-handbook-extract for the Mautical Institute
1 - Historical Antecedents, Social Consideration.pdf
Univ-Connecticut-ChatGPT-Presentaion.pdf
Modernising the Digital Integration Hub

Making awesome apps