Your SlideShare is downloading. ×
0
Android pro tips trilogy
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 enou...
Use passive location
>Gingerbread.
Passive location – Receive location update when other
app is using location provider.
R...
Intents for location monitoring
Specify pending intent to BCAST Receiver when the
location changes.
Location is stored as ...
Fuse Location
Define your priorities
Let Google play services do the heavy lifting.
Using fuse location
When to update my App?
Right before the user launches it
Assuming I have battery.
Assuming I have BW.
Updating Data.
Server updates – use GCM.
Here is why
Updating Data from 3rd
party servers
Monitor the device
Use Variable alarms.
Use conditional services and receivers.
Monit...
Is it worth waking up?
Set wake alarm for min update freq.
Set non-wake alarm from optimal update freq.
Monitor device State
Change the refresh rate based on device state:
Update without connectivity?
Update more on WiFi?
Upda...
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?
Pau...
Activity recognition
Activity recognition
Activity recognition
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 a...
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, o...
Use sync adapter to... sync
Sync adapter is great for sending data from the device
to your server
Has a system wide POV.
P...
Be efficient
Be efficient
Radio Resource
Frequency is expensive.
Cell tower can not service 100% of its clients 100% of
the time.
Frequency is dynam...
UMTS RRC States. (source: 3gpp)
Radio State Machine
IDLE
FACH
DCH
Power
~10Sec tail time
~12-75 Sec tail time
Bandwidth
Radio State Machine
IDLE
FACH
DCH
Power
~10Sec tail time
~12-75 Sec tail time
~2 Sec
Bandwidth
Avoid bursty traffic
Transmit data “together”.
Piggyback if needed.
Pre-fetch data for the next 2-5 minutes.
Don't ping ju...
Don't be HTTP rookie
Don't download what you already have.
Take care of server headers
Max-age, expires.
Use conditional G...
Don't be lazy
Read AT&T research:
Top Radio Resources Issues in Mobile Applications
AT&T Lab Research – call for more effi...
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 ke...
Text Input
Plain text types:
URIs
Email address
People's names
Postal address
Passwords
Context is critical
Activity recognition
Location
GeoFencing
Personal
G+ SSO
Login once – on all of your devices.
What friends are doing?
What my friends are doing?
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.
Intercept links
Use Intent Receiver
similar to maps / youtube
Summary
ran@mobiliup.com
+Ran Nachmany
Thank You
Android Pro Tips - IO 13 reloaded Event
Android Pro Tips - IO 13 reloaded Event
Android Pro Tips - IO 13 reloaded Event
Android Pro Tips - IO 13 reloaded Event
Android Pro Tips - IO 13 reloaded Event
Android Pro Tips - IO 13 reloaded Event
Upcoming SlideShare
Loading in...5
×

Android Pro Tips - IO 13 reloaded Event

1,363

Published on

These are the slides I used in my PrtoTip trilogy talk during IO #13 Reloaded GDG meetup (http://www.meetup.com/GDG-Herzeliya/events/121409372/).
It covers a broad range of Android development tips.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,363
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
25
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "Android Pro Tips - IO 13 reloaded Event"

  1. 1. Android pro tips trilogy
  2. 2. Always up to date Users don't like to wait. Location updated. Data downloaded from web.
  3. 3. 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.
  4. 4. Use passive location >Gingerbread. Passive location – Receive location update when other app is using location provider. Requires ACCESS_FINE_LOCATION permission. Location.getProvider.
  5. 5. Intents for location monitoring Specify pending intent to BCAST Receiver when the location changes. Location is stored as an extra KEY_LOCATION_CHNAGE Useful for multiple activities / services that tracks location.
  6. 6. Fuse Location Define your priorities Let Google play services do the heavy lifting.
  7. 7. Using fuse location
  8. 8. When to update my App? Right before the user launches it Assuming I have battery. Assuming I have BW.
  9. 9. Updating Data. Server updates – use GCM. Here is why
  10. 10. Updating Data from 3rd party servers Monitor the device Use Variable alarms. Use conditional services and receivers. Monitor the user
  11. 11. Is it worth waking up? Set wake alarm for min update freq. Set non-wake alarm from optimal update freq.
  12. 12. 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?
  13. 13. Monitor connectivity
  14. 14. Monitor Battery
  15. 15. Monitor State canged BCAST
  16. 16. Monitor the user Change your behavior based on the user's acitivty Update more when driving? Update more when walking? Pause updates while cycling?
  17. 17. Activity recognition
  18. 18. Activity recognition
  19. 19. Activity recognition
  20. 20. 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.
  21. 21. Work Offline Queue and Send transactions. Use persistence layer. Tape From Square.
  22. 22. 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
  23. 23. 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.
  24. 24. Be efficient
  25. 25. Be efficient
  26. 26. Radio Resource Frequency is expensive. Cell tower can not service 100% of its clients 100% of the time. Frequency is dynamically allocated to clients. Cellular cells uses various multiplexing methods (OFDM/OFDMA, FTDMA).
  27. 27. UMTS RRC States. (source: 3gpp)
  28. 28. Radio State Machine IDLE FACH DCH Power ~10Sec tail time ~12-75 Sec tail time Bandwidth
  29. 29. Radio State Machine IDLE FACH DCH Power ~10Sec tail time ~12-75 Sec tail time ~2 Sec Bandwidth
  30. 30. 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
  31. 31. 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.
  32. 32. 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/
  33. 33. Adaptive App Optimized for different User Experience. User has more than one device. Be predictable. Behave as expected
  34. 34. 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
  35. 35. Text Input Plain text types: URIs Email address People's names Postal address Passwords
  36. 36. Context is critical Activity recognition Location
  37. 37. GeoFencing
  38. 38. Personal G+ SSO Login once – on all of your devices. What friends are doing?
  39. 39. What my friends are doing?
  40. 40. Geek Magic – Text to Speech
  41. 41. Geek Magic – Text to Speech
  42. 42. Geek Magic – Text to Speech
  43. 43. Geek Magic – Speech Recognition
  44. 44. Geek Magic – Speech Recognition More than one result is returned. Loop through all results, taking context in mind.
  45. 45. Intercept links Use Intent Receiver similar to maps / youtube
  46. 46. Summary
  47. 47. ran@mobiliup.com +Ran Nachmany Thank You
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×