Efficient data transfer in Android
-
Upload
cotap-engineering -
Category
Engineering
-
view
173 -
download
1
Transcript of Efficient data transfer in Android
Efficient Data Transfer in AndroidRalph Pina
Topics- Radio state machine- Big vs small cookie model- Best practices- Analyze your data transfer- Resources for those interested
Radio State MachineFull power: Used when a connection is active, allowing the device to transfer data at its highest possible rate.
Low power: An intermediate state that uses around 50% of the battery power at the full state.
Standby: The minimal energy state during which no network connection is active or required.
- AT&T timing for 3G
And then… show the user
Bundle Data Transfers
More graphs!
Wow power!
Prefetch!“The single most important measure: transmit as much data as possible in a single burst and then end the connection.” - AT&T Labs
Parallelize!- Parallelize requests
Download Patterns!- Optimize download patterns based on data connection.
- Prefetch more in 4G since you have higher speed and it takes more power for the antenna to come back.
More stuff!- In Android, use SyncAdapter. Let the OS do the the sync!- Variable data transfers depending on usage.- Sync when device is connected to power.
How GCM Works- Phone connected via TCP port 5228- Periodic heartbeat keeps the connection alive.15 min on Wifi and 28 min on cell
Cotap Device Msging?- Build our own MQTT server - invented by IBM, very low power/bandwidth- Current examples: Eclipse PahoFacebook Messenger and main app
Show and tell- AT&T ARO
- supports second rate OS like iOS and WP8!
- Android Monitor - <sdk location>/tools/monitor
Resources/Citations- AT&T: A Call For More Energy Efficient Apps - http://www.research.att.com/articles/featured_stories/2011_03/201102_Energy_efficient?fbid=Fp7Al9yFu9_
- AT&T ARO: https://github.com/attdevsupport/ARO
- Android Root Push Notification Fixer: https://play.google.com/store/apps/details?id=com.andqlimax.pushfixer&hl=en
- MQTT in Android: http://mqtt.org/wiki/doku.php/mqtt_on_the_android_platform
- Facebook: Building Facebook Messanger - https://www.facebook.com/notes/facebook-engineering/building-facebook-messenger/10150259350998920
- DevBytes: Efficient Data Transfers - Understanding the Cell Radio (8/21/13): http://www.youtube.com/watch?v=cSIB2pDvH3E
- DevBytes: Efficient Data Transfers - Analyzing Your Transfer Profile (8/28/13): https://www.youtube.com/watch?v=cLqWYeQcG94
- DevBytes: Efficient Data Transfers - Effective Prefetching (9/4/13): http://www.youtube.com/watch?v=Rk1u7VVmadE
- Using connectivity patterns: http://developer.android.com/training/efficient-downloads/connectivity_patterns.html
- Using Sync Adapters: http://developer.android.com/training/sync-adapters/index.html
Resources/Citations- DevBytes: Efficient Data Transfers - Batching, Bundling, and SyncAdapters (9/11/13): http://www.youtube.com/watch?v=5onKZcJyJwI
- DevBytes: Efficient Data Transfers - Eliminating Polling with Google Cloud Messaging (9/20/13): https://www.youtube.com/watch?v=cJbGK6cVmSM
- DevBytes: Efficient Data Transfers - Variable Update Frequencies (9/25/13): https://www.youtube.com/watch?v=9z1BfyqmsyA
- DevBytes: Efficient Data Transfers - Minimizing Payloads (10/2/13): http://www.youtube.com/watch?v=OfYLG6FXtqE
- AT&T Research - Tail Optimization Protocol: http://www.research.att.com/export/sites/att_labs/techdocs/TD_100036.pdf
- Google I/O 2014 App: https://github.com/google/iosched
- Analyzing ARO Data: https://developer.att.com/static-assets/documents/aro/ATT_ARO_Analysis_Guide_3-2.pdf
- LTE Long and Short DRX Cycles to Save Power: http://mobilesociety.typepad.com/mobile_life/2009/12/lte-long-and-short-drx-cycles-to-save-power.html