72
Mobile Application Optimization

Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Embed Size (px)

Citation preview

Page 1: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Mobile Application Optimization

Page 2: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Sanath NandasiriProgrammer.(Not a singer)

(Exilesoft)

Page 3: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Outline

• Why we need optimization.• Performance tuning life cycle. • Networking Optimizations.• Memory Optimizations.• UI Optimization.• Reduce Size of APK.

Page 4: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Why we need optimization

Pretty simple.

Page 5: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)
Page 6: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Performance TuningYou might have good reason to optimize

Page 7: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)
Page 8: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Networking Optimizations

• Network handling.• Network Request.• Batching background work.• Battery.

Page 9: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Network handlingRespect your user

Page 10: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Network radio

Page 11: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Network RequestHow to make good request.

Page 12: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Type of Network request.

Page 13: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Server pulling is bad? It drains Battery so past

Page 14: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Server push is better ( Using GCM)

Page 15: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Good way of handling the server pulling

Page 16: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Try to batching when ever possible.

Page 17: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Also prefetching data for future use.

Page 18: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Batching background work

Sync later.

Page 19: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Use alarm manager

Exact Alarm Inexact Alarm

Page 20: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

How to set

Page 21: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Using Sync Adapters.

Page 22: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

GcmNetworkManager (Pre L)

Page 23: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

JobScheduler API (L).

Page 24: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

BatteryMay be your major concern.

Page 25: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Measure battery consumption.

• Use battery historian tool.• https://github.com/google/battery-historian.• adb shell dumpsys batterystats --reset• adb shell dumpsys batterystats> report.txt• historian.py report.txt> raport.html

Page 26: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

DemoUse battery historian tool

Page 27: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Memory Optimizations.

• HashMap.• AutoBoxing.• SparseArrayFamily.• Enums.• Iterator or index.• BitMaps.• Memory Leaks.

Page 28: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

HashMap

Page 29: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

HashMap

Page 30: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

ArrayMaps

Page 31: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

ArrayMaps search

Page 32: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

ArrayMap search

Page 33: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

ArrayMap allocation vs HashMap allocation

Page 34: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Where to use ArrayMap

Page 35: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

AutoBoxing

Page 36: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

What is autoboxing

Page 37: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Primitive vs Generics

Page 38: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Problem with HashMap and ArrayMap

Page 39: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

SparseArray Family

Page 40: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

No autoboxing

Page 41: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Enums.Enums sucks.

Page 42: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Cost of Enums

“Enums often require more than twice as much memory as static constants.You should strictly avoid using enums on Android”

Google

Page 43: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Integer vs Enums

20+ byte for each

12-16 byte array

This is 13x more than integer version

Page 44: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Using Integer constant with @IntDef

Page 45: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Stop using Enums.if already used, try to setup proguard

Page 46: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Iterator or index.

Page 47: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Method code

for Index Int size = list.size();for(int i = 0 ;I < size ; i++){ Object o = list.get(i)}

Iterator for(Iterator it = list.iterator(); it.hasNext();){ Object o = it.next();}

for simple for(Object o : list){…}

Method for Iterate a list

Page 48: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Stats of all methods

Page 49: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Bitmaps.Memory hungry

Page 50: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Bitmap need continues memory blocks

Page 51: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Select smaller pixel format

Page 52: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Scale the Bitmap

Page 53: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Reuse Bitmap

Page 54: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Good to use libs

Page 55: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Memory LeaksAvoid, May cause to crash or freeze.

Page 56: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Memory leaks

• GC not prevent memory leaks• Reference to an unused object preventing GC.• Reference to Activity (Context)• View• Drawables• Etc…

Page 57: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)
Page 58: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Object in Heap

• Shallow Heap• How large this object is. (size in byte)

• Retained Heap• Total memory freed by removing particular object.

Page 59: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

How to detect memory leaks

• Using MAT (Memory Analyzer Tool)• It uses Dominator tree to calculate retained heap.

Page 60: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Dominator tree

• Dominator : closest object on every path to node

Page 61: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Demouse MAT

Memory Analysis for Android Applications

Page 62: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

UI OptimizationBeauty need more care.

Hierarchy Viewer Walkthrough

Page 63: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Hierarchy Viewer to see UI view hierarchy

Page 64: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Avoid much deeper layout hierarchy.

Page 65: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Custom View for more complex view

Page 66: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

LintUse Lint, to have a hint.

Improving Your Code with lint

Page 67: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

How lint works

Page 68: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Lint report

Page 69: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

DemoUse Lint tool.

Page 70: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Reduce Size of APKTo save users data.

Putting Your APKs on Diet

Page 71: Mobile Application Optimization. Sanath Nandasiri Programmer.(Not a singer) (Exilesoft)

Steps

• Run Proguard• Use Lint extensively• Be opinionated about resources• Use hdpi, xhdpi and xxhdpi

• Minimize resources configurations• Compress images• Code reuse