secure development with android (enrique lopez manas technology stream)
TRANSCRIPT
![Page 1: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/1.jpg)
Android High Performance
Enrique López MañasGoogle Developer Expert & IT Consultor
![Page 2: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/2.jpg)
Ego Slide
• IT Consultor
• Google Developer Expert
• @eenriquelopez
![Page 3: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/3.jpg)
Performance
"how well a person, machine, etc. does a piece of work or an activity"
Cambridge
![Page 4: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/4.jpg)
But what is high performance?
• Strategies to create efficient software
Layout
Energy and battery
Security
Multithreading Programming patterns
Debugging techniques
![Page 5: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/5.jpg)
Why is important?
• User Engagement• Costs• Maintenance• Quality
![Page 6: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/6.jpg)
3 Important Limits
0.1s 1s 10s
[Miller 1968; Card et al. 1991]:
![Page 7: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/7.jpg)
What this means in Android?
ANR
![Page 8: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/8.jpg)
ANR
• No response for input event in 5 seconds• BroadCast receiver still executing after 10 seconds
![Page 9: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/9.jpg)
How to avoid it?
Background operations? Show feedback!
![Page 10: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/10.jpg)
How to avoid it?
Splash Screen?
![Page 11: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/11.jpg)
How to avoid it?
Calculations? Worker thread!
![Page 12: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/12.jpg)
How to avoid it?
Systrace! TraceView!
![Page 13: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/13.jpg)
Debug
DDMS
![Page 14: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/14.jpg)
Networking
![Page 15: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/15.jpg)
Layouts
TV: 24fps(NTSC), 25fps(PAL)
New cam-coders / slow motion: 48fps+
Blur can occur!
Apps: 60fps!
every 16 ms!
![Page 16: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/16.jpg)
Layouts
![Page 17: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/17.jpg)
Layouts
![Page 18: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/18.jpg)
Reusing layouts
![Page 19: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/19.jpg)
Reusing layouts
![Page 20: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/20.jpg)
Reusing layouts
![Page 21: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/21.jpg)
ViewStub
ViewStub.inflate() View.setVisibility()
![Page 22: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/22.jpg)
ViewStub
![Page 23: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/23.jpg)
Hierarchy Viewer
![Page 24: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/24.jpg)
Profile GPU Rendering
![Page 25: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/25.jpg)
Profile GPU Rendering
• Blue: draw• Purple: prepare• Red: process• Orange: execute
![Page 26: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/26.jpg)
Memory
“the ability to remember information, experiences, and people"
Cambridge
![Page 27: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/27.jpg)
Memory - Enumerations
![Page 28: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/28.jpg)
Memory - Enumerations
![Page 29: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/29.jpg)
Memory - Enumerations
![Page 30: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/30.jpg)
Memory - Enumerations
![Page 31: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/31.jpg)
Memory - Enumerations @IntDef
![Page 32: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/32.jpg)
Memory - Enumerations @IntDef
![Page 33: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/33.jpg)
Memory - Enumerations Summary
• Unnecessary allocations• AVOID USING THEM• Change as much as possible with static finalinteger values
![Page 34: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/34.jpg)
Memory - Constants
Constants in the code should be static and final to take advantageof memory savings and to avoid initialization in Java compiler
![Page 35: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/35.jpg)
Memory - Strings
![Page 36: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/36.jpg)
Memory - Strings
![Page 37: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/37.jpg)
Memory - Strings
![Page 38: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/38.jpg)
Memory Leaks
“a memory leak is a type of resource leak that occurs when a computer program incorrectly manages memory allocations in such a way that memory which is no longer needed is not released.” Wikipedia
![Page 39: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/39.jpg)
Memory Leaks - static fields
![Page 40: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/40.jpg)
Memory Leaks - static fields
![Page 41: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/41.jpg)
Memory Leaks - non-static inner classes
![Page 42: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/42.jpg)
Memory Leaks - WeakReference
![Page 43: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/43.jpg)
Threading
“Threading is a method of hair removal originating in Asia.”
Wikipedia
![Page 44: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/44.jpg)
Threading
“is the smallest sequence of programmed instructions that can be managed independently by a scheduler”
Wikipedia
![Page 45: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/45.jpg)
Threading
• AsyncTask • Loader • Threads…
Know your war!
![Page 46: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/46.jpg)
Threading - AsyncTask
Communicate Worker Thread with UI
Does not need to communicate UI? Does not need to notify user? DOES NOT NEED ASYNCTASK!
If the AsyncTask has all parameters Void, you are only implementing doInBackground() and you do not need an AsyncTask
![Page 47: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/47.jpg)
Threading - AsyncTaskLoader
Use it to fetch data
Same features as AsyncTask…
…plus the Activity life-cycle independency and data caching
![Page 48: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/48.jpg)
Threading - AsyncTaskLoader
![Page 49: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/49.jpg)
Threading - Services
• Not threads!• Executed in UI Thread by default• Never start a long running operation!• Lifecycle
![Page 50: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/50.jpg)
Threading - IntentService
• Particular implementation of a Service• Execute sequential operations in background• Don’t need to handle the lifecycle
![Page 51: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/51.jpg)
Networking
“process of communication between different terminal nodes to exchange data”
Me
![Page 52: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/52.jpg)
Networking - best practices
Latency Gauging
![Page 53: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/53.jpg)
Networking - best practices
Batch connections
• Wait, collect and send • (Analytics)
![Page 54: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/54.jpg)
Networking - best practices
Pre-fetch
• Download as much as possible • (specially if idle connection)
![Page 55: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/55.jpg)
Networking - best practices
Queuing connections
![Page 56: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/56.jpg)
Networking - best practices
Caching responses
![Page 57: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/57.jpg)
Networking - best practices
Last modified
![Page 58: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/58.jpg)
Networking - best practices
Exponential back-off
![Page 60: Secure Development with Android (Enrique Lopez Manas Technology Stream)](https://reader031.vdocuments.mx/reader031/viewer/2022030316/5874bfa51a28ab8f508b4eff/html5/thumbnails/60.jpg)
#dfist