SlideShare a Scribd company logo
Pentingnya Performa pada
Aplikasi Android
Ahmad Arif Faizin
Google Associate Android Developer, Curriculum Developer Dicoding
#PerfMatters
Report
● User akan uninstall ketika:
○ 36% karena baterai boros
○ 50.6 % karena menghabiskan memori
○ 62 % karena ada crash error
● User akan blame aplikasinya + juga brand company-nya
https://www.dotcominfoway.com/blog/infographic-why-users-uninstall-your-app/#gref
Basic Performance Test
● Test Umum:
Tes oleh diri sendiri dan internal
● User perception :
Tanyakan ke user (early adopter/beta tester) dan tanyakan bagaimana
pendapatnya
● Coba di low-end devices :
Dengan spesifikasi dan RAM paling minimum
● Monkey testing :
Coba dengan random input dan behaviour untuk tahu apakah aplikasi akan
crash
User Expectation
● Loadingnya Cepat
● Animasinya smooth
● Nggak boros baterai
● Lancar nggak ada crash
Frame Rate
60 FPS Rule
1000 ms / 60 frames = 16.666 ms/frame
Nge-lag?
Jika >16 ms
Enable GPU Rendering
1. Settings
2. Developer Options
3. Monitoring
4. Profile GPU Rendering
5. On screen as bars.
6. Buka aplikasi yang ingin
dilihat.
Bagaimana Tahu > 16 ms
Hasil GPU Rendering
● Makin tinggi makin lambat
● Batas 16 ms ada di garis hijau
● Setiap warna merupakan
rendering stages
Rendering Problem and Solution
Enable GPU Overdraw
1. Settings
2. Developer Options
3. Hardware accelerated rendering
4. Debug GPU Overdraw
5. On screen as bars.
6. Buka aplikasi yang ingin dilihat.
GPU Overdraw Color
● Hapus background yang tidak digunakan.
○ Di ImageView.
○ Di Root Layout
● Flattening View Hierarchy dengan ConstraintLayout
● Pakai Clip custom view.
● Kurangi penggunaan transparansi (alpha rendering) pada view.
● Minimalisir overlap.
Minimize Overdraw
Layout Inspector
● Thread Management
● Data Structure
● Algorithm
Tips Computing
Android Profiler
Stack Memory & Heap Memory
Garbage Collection (GC)
Memory Leaks
● Unregister broadcast receiver / listener di onStop setelah register di onStart.
● Jangan reference View objects:
○ Dari luar UI thread
○ Di async callbacks
○ Dari static objects
● Jangan alokasikan objek di inner loop
● Jangan alokasikan objek di onDraw
● Gunakan Application Context di Singleton, daripada Activity Context.
● Jangan gunakan inner class di Activity/Fragment.
Avoid Memory Leak
LeakCanary
● Tambah dependency
dependencies {
...
debugImplementation
'com.squareup.leakcanary:leakcanary-
android:2.4'
}
● Jalankan aplikasi, kemudian
keluar ke home dan masuk lagi.
● Jika ada memory leak, akan
muncul notifikasi dan
menganalisis memorinya
LeakCanary Result
● Nama Activity yang leak akan
muncul di atas
● Jika statusnya UNKNOWS, di sini
lah awal mula leak muncul
● Biasanya di akhir point, Leak
Canary akan ngasih solusi di mana
suatu object harus dibersihkan.
● Offline-first architecture. Simpan data ke lokal dulu jika memungkinkan.
● Jangan sering-sering sinkron ke server, Gunakan FCM (Firebase Cloud
Messaging untuk kasih tau ke device kalau ada update di server.
● Gunakan Wakelock/Timer seperlunya.
● Gunakan sensor yang dibutuhkan saja.
● Lakukan koneksi yang yang lama hanya ketika terhubung ke Wi-Fi, seperti
download film atau backup foto.
● Jangan langsung eksekusi, jika bisa ditunda.
Battery Best-Practice
Battery Historian
https://www.youtube.com/playlist?list=
PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE
Static Analysis Tool
Contact:
@arif_faizin
THANKS!
Follow us: @dicoding

More Related Content

Similar to Dicoding Developer Coaching #36: Android | Pentingnya Performa pada Aplikasi Android

Pemrograman Bergerak Diskusi 4.docx
Pemrograman Bergerak Diskusi 4.docxPemrograman Bergerak Diskusi 4.docx
Pemrograman Bergerak Diskusi 4.docx
HendroGunawan8
 
02 Activity - Intents - Fragment.pptx
02 Activity - Intents - Fragment.pptx02 Activity - Intents - Fragment.pptx
02 Activity - Intents - Fragment.pptx
ZenDejavu
 
Redistributable Intro to Scrum
Redistributable Intro to ScrumRedistributable Intro to Scrum
Redistributable Intro to ScrumScrum Asia Pasifik
 
Pengantar Android
Pengantar AndroidPengantar Android
Pengantar Android
Sherly Uda
 
PANDUAN CBT 2022.pptx
PANDUAN CBT 2022.pptxPANDUAN CBT 2022.pptx
PANDUAN CBT 2022.pptx
YuniatunDwiNurriskah
 
Smart trash can using arduino uno with lab view
Smart trash can using arduino uno with lab viewSmart trash can using arduino uno with lab view
Smart trash can using arduino uno with lab view
BrisaAmelia40
 
Smart Trash Can using Arduino Uno with LabVIEW
Smart Trash Can using Arduino Uno with LabVIEWSmart Trash Can using Arduino Uno with LabVIEW
Smart Trash Can using Arduino Uno with LabVIEW
DindaAinunQolbi17
 
Tutorial Form login menggunakan MVC
Tutorial Form login menggunakan MVCTutorial Form login menggunakan MVC
Tutorial Form login menggunakan MVC
Nadiya Aynun
 

Similar to Dicoding Developer Coaching #36: Android | Pentingnya Performa pada Aplikasi Android (8)

Pemrograman Bergerak Diskusi 4.docx
Pemrograman Bergerak Diskusi 4.docxPemrograman Bergerak Diskusi 4.docx
Pemrograman Bergerak Diskusi 4.docx
 
02 Activity - Intents - Fragment.pptx
02 Activity - Intents - Fragment.pptx02 Activity - Intents - Fragment.pptx
02 Activity - Intents - Fragment.pptx
 
Redistributable Intro to Scrum
Redistributable Intro to ScrumRedistributable Intro to Scrum
Redistributable Intro to Scrum
 
Pengantar Android
Pengantar AndroidPengantar Android
Pengantar Android
 
PANDUAN CBT 2022.pptx
PANDUAN CBT 2022.pptxPANDUAN CBT 2022.pptx
PANDUAN CBT 2022.pptx
 
Smart trash can using arduino uno with lab view
Smart trash can using arduino uno with lab viewSmart trash can using arduino uno with lab view
Smart trash can using arduino uno with lab view
 
Smart Trash Can using Arduino Uno with LabVIEW
Smart Trash Can using Arduino Uno with LabVIEWSmart Trash Can using Arduino Uno with LabVIEW
Smart Trash Can using Arduino Uno with LabVIEW
 
Tutorial Form login menggunakan MVC
Tutorial Form login menggunakan MVCTutorial Form login menggunakan MVC
Tutorial Form login menggunakan MVC
 

More from DicodingEvent

Developer Coaching #114.pdf
Developer Coaching #114.pdfDeveloper Coaching #114.pdf
Developer Coaching #114.pdf
DicodingEvent
 
Ask Us Anything about Studi Independen Bersertifikat Kampus Merdeka X Dicodin...
Ask Us Anything about Studi Independen Bersertifikat Kampus Merdeka X Dicodin...Ask Us Anything about Studi Independen Bersertifikat Kampus Merdeka X Dicodin...
Ask Us Anything about Studi Independen Bersertifikat Kampus Merdeka X Dicodin...
DicodingEvent
 
tantangan menjadi developer di abad 21
tantangan menjadi developer di abad 21tantangan menjadi developer di abad 21
tantangan menjadi developer di abad 21
DicodingEvent
 
Mengenalkan augmented reality (ar) pada snapchat
Mengenalkan augmented reality (ar) pada snapchatMengenalkan augmented reality (ar) pada snapchat
Mengenalkan augmented reality (ar) pada snapchat
DicodingEvent
 
Membangun Aplikasi Serverless di Platfrom AWS
Membangun Aplikasi Serverless di Platfrom AWSMembangun Aplikasi Serverless di Platfrom AWS
Membangun Aplikasi Serverless di Platfrom AWS
DicodingEvent
 
IDCamp X Madrasah: Pengenalan Computational Thinking
IDCamp X Madrasah: Pengenalan Computational ThinkingIDCamp X Madrasah: Pengenalan Computational Thinking
IDCamp X Madrasah: Pengenalan Computational Thinking
DicodingEvent
 
Membuat Produk Digital Terbaik ala Startup Unicorn
Membuat Produk Digital Terbaik ala Startup UnicornMembuat Produk Digital Terbaik ala Startup Unicorn
Membuat Produk Digital Terbaik ala Startup Unicorn
DicodingEvent
 
TechTalk 2021: Peran IT Security dalam Penerapan DevOps
TechTalk 2021: Peran IT Security dalam Penerapan DevOpsTechTalk 2021: Peran IT Security dalam Penerapan DevOps
TechTalk 2021: Peran IT Security dalam Penerapan DevOps
DicodingEvent
 
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CD
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CDTechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CD
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CD
DicodingEvent
 
Membuat Solusi Bermanfaat dengan Programming - Nur Rohman
Membuat Solusi Bermanfaat dengan Programming - Nur RohmanMembuat Solusi Bermanfaat dengan Programming - Nur Rohman
Membuat Solusi Bermanfaat dengan Programming - Nur Rohman
DicodingEvent
 
Potensi karier menjadi ios developer di masa depan
Potensi karier menjadi ios developer di masa depanPotensi karier menjadi ios developer di masa depan
Potensi karier menjadi ios developer di masa depan
DicodingEvent
 
Id camp x dicoding live : persiapan jadi software engineer hebat 101
Id camp x dicoding live : persiapan jadi software engineer hebat 101Id camp x dicoding live : persiapan jadi software engineer hebat 101
Id camp x dicoding live : persiapan jadi software engineer hebat 101
DicodingEvent
 
Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021
DicodingEvent
 
Teknologi Baru Android di Google I/O 2021 - Andrew Kurniadi
Teknologi Baru Android di Google I/O 2021 - Andrew KurniadiTeknologi Baru Android di Google I/O 2021 - Andrew Kurniadi
Teknologi Baru Android di Google I/O 2021 - Andrew Kurniadi
DicodingEvent
 
Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...
Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...
Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...
DicodingEvent
 
Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...
Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...
Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...
DicodingEvent
 
Pengantar Cloud Computing dengan AWS - Petra Novandi Barus
Pengantar Cloud Computing dengan AWS - Petra Novandi BarusPengantar Cloud Computing dengan AWS - Petra Novandi Barus
Pengantar Cloud Computing dengan AWS - Petra Novandi Barus
DicodingEvent
 
Dicoding Developer Coaching #34: Android | Modular Android App dengan Dynamic...
Dicoding Developer Coaching #34: Android | Modular Android App dengan Dynamic...Dicoding Developer Coaching #34: Android | Modular Android App dengan Dynamic...
Dicoding Developer Coaching #34: Android | Modular Android App dengan Dynamic...
DicodingEvent
 
Dicoding Developer Coaching #35: Android | Setup Continuous Integration di An...
Dicoding Developer Coaching #35: Android | Setup Continuous Integration di An...Dicoding Developer Coaching #35: Android | Setup Continuous Integration di An...
Dicoding Developer Coaching #35: Android | Setup Continuous Integration di An...
DicodingEvent
 
Dicoding Developer Coaching #33: Android | Depedency Injection dengan Dagger,...
Dicoding Developer Coaching #33: Android | Depedency Injection dengan Dagger,...Dicoding Developer Coaching #33: Android | Depedency Injection dengan Dagger,...
Dicoding Developer Coaching #33: Android | Depedency Injection dengan Dagger,...
DicodingEvent
 

More from DicodingEvent (20)

Developer Coaching #114.pdf
Developer Coaching #114.pdfDeveloper Coaching #114.pdf
Developer Coaching #114.pdf
 
Ask Us Anything about Studi Independen Bersertifikat Kampus Merdeka X Dicodin...
Ask Us Anything about Studi Independen Bersertifikat Kampus Merdeka X Dicodin...Ask Us Anything about Studi Independen Bersertifikat Kampus Merdeka X Dicodin...
Ask Us Anything about Studi Independen Bersertifikat Kampus Merdeka X Dicodin...
 
tantangan menjadi developer di abad 21
tantangan menjadi developer di abad 21tantangan menjadi developer di abad 21
tantangan menjadi developer di abad 21
 
Mengenalkan augmented reality (ar) pada snapchat
Mengenalkan augmented reality (ar) pada snapchatMengenalkan augmented reality (ar) pada snapchat
Mengenalkan augmented reality (ar) pada snapchat
 
Membangun Aplikasi Serverless di Platfrom AWS
Membangun Aplikasi Serverless di Platfrom AWSMembangun Aplikasi Serverless di Platfrom AWS
Membangun Aplikasi Serverless di Platfrom AWS
 
IDCamp X Madrasah: Pengenalan Computational Thinking
IDCamp X Madrasah: Pengenalan Computational ThinkingIDCamp X Madrasah: Pengenalan Computational Thinking
IDCamp X Madrasah: Pengenalan Computational Thinking
 
Membuat Produk Digital Terbaik ala Startup Unicorn
Membuat Produk Digital Terbaik ala Startup UnicornMembuat Produk Digital Terbaik ala Startup Unicorn
Membuat Produk Digital Terbaik ala Startup Unicorn
 
TechTalk 2021: Peran IT Security dalam Penerapan DevOps
TechTalk 2021: Peran IT Security dalam Penerapan DevOpsTechTalk 2021: Peran IT Security dalam Penerapan DevOps
TechTalk 2021: Peran IT Security dalam Penerapan DevOps
 
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CD
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CDTechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CD
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CD
 
Membuat Solusi Bermanfaat dengan Programming - Nur Rohman
Membuat Solusi Bermanfaat dengan Programming - Nur RohmanMembuat Solusi Bermanfaat dengan Programming - Nur Rohman
Membuat Solusi Bermanfaat dengan Programming - Nur Rohman
 
Potensi karier menjadi ios developer di masa depan
Potensi karier menjadi ios developer di masa depanPotensi karier menjadi ios developer di masa depan
Potensi karier menjadi ios developer di masa depan
 
Id camp x dicoding live : persiapan jadi software engineer hebat 101
Id camp x dicoding live : persiapan jadi software engineer hebat 101Id camp x dicoding live : persiapan jadi software engineer hebat 101
Id camp x dicoding live : persiapan jadi software engineer hebat 101
 
Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021
 
Teknologi Baru Android di Google I/O 2021 - Andrew Kurniadi
Teknologi Baru Android di Google I/O 2021 - Andrew KurniadiTeknologi Baru Android di Google I/O 2021 - Andrew Kurniadi
Teknologi Baru Android di Google I/O 2021 - Andrew Kurniadi
 
Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...
Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...
Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...
 
Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...
Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...
Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...
 
Pengantar Cloud Computing dengan AWS - Petra Novandi Barus
Pengantar Cloud Computing dengan AWS - Petra Novandi BarusPengantar Cloud Computing dengan AWS - Petra Novandi Barus
Pengantar Cloud Computing dengan AWS - Petra Novandi Barus
 
Dicoding Developer Coaching #34: Android | Modular Android App dengan Dynamic...
Dicoding Developer Coaching #34: Android | Modular Android App dengan Dynamic...Dicoding Developer Coaching #34: Android | Modular Android App dengan Dynamic...
Dicoding Developer Coaching #34: Android | Modular Android App dengan Dynamic...
 
Dicoding Developer Coaching #35: Android | Setup Continuous Integration di An...
Dicoding Developer Coaching #35: Android | Setup Continuous Integration di An...Dicoding Developer Coaching #35: Android | Setup Continuous Integration di An...
Dicoding Developer Coaching #35: Android | Setup Continuous Integration di An...
 
Dicoding Developer Coaching #33: Android | Depedency Injection dengan Dagger,...
Dicoding Developer Coaching #33: Android | Depedency Injection dengan Dagger,...Dicoding Developer Coaching #33: Android | Depedency Injection dengan Dagger,...
Dicoding Developer Coaching #33: Android | Depedency Injection dengan Dagger,...
 

Recently uploaded

HUKUM PERNIKAHAN DALAM ISLAM DAN DASAR HUKUMNYA.ppt
HUKUM PERNIKAHAN DALAM ISLAM DAN DASAR HUKUMNYA.pptHUKUM PERNIKAHAN DALAM ISLAM DAN DASAR HUKUMNYA.ppt
HUKUM PERNIKAHAN DALAM ISLAM DAN DASAR HUKUMNYA.ppt
LuhAriyani1
 
PPT (EKOSISTEM) - Refandi Alim - Bahan Ajar Magang.pptx
PPT (EKOSISTEM) - Refandi Alim - Bahan Ajar Magang.pptxPPT (EKOSISTEM) - Refandi Alim - Bahan Ajar Magang.pptx
PPT (EKOSISTEM) - Refandi Alim - Bahan Ajar Magang.pptx
refandialim
 
Materi Kuliah 3 - budaya populer & budaya massa.pptx
Materi Kuliah 3 - budaya populer & budaya massa.pptxMateri Kuliah 3 - budaya populer & budaya massa.pptx
Materi Kuliah 3 - budaya populer & budaya massa.pptx
nuzzayineffendi52
 
PPT ASAS PERATURAN PERundang UNDANGAN.pptx
PPT ASAS PERATURAN PERundang UNDANGAN.pptxPPT ASAS PERATURAN PERundang UNDANGAN.pptx
PPT ASAS PERATURAN PERundang UNDANGAN.pptx
LuhAriyani1
 
KOSP SD MODEL 1 - datadikdasmen.com.docx
KOSP SD MODEL 1 - datadikdasmen.com.docxKOSP SD MODEL 1 - datadikdasmen.com.docx
KOSP SD MODEL 1 - datadikdasmen.com.docx
sdpurbatua03
 
Materi kuliah tEORI KOMUNIKASI PEMBANGUNAN.pptx
Materi kuliah tEORI KOMUNIKASI PEMBANGUNAN.pptxMateri kuliah tEORI KOMUNIKASI PEMBANGUNAN.pptx
Materi kuliah tEORI KOMUNIKASI PEMBANGUNAN.pptx
erlinahayati1
 
PPT PERTEMUAN 12 AUDIT KELOMPOK 7 KELAS A.pdf
PPT PERTEMUAN 12 AUDIT KELOMPOK 7 KELAS A.pdfPPT PERTEMUAN 12 AUDIT KELOMPOK 7 KELAS A.pdf
PPT PERTEMUAN 12 AUDIT KELOMPOK 7 KELAS A.pdf
queenta737
 
tugas Ppkn_2024043274444_150222_0000.pdf
tugas Ppkn_2024043274444_150222_0000.pdftugas Ppkn_2024043274444_150222_0000.pdf
tugas Ppkn_2024043274444_150222_0000.pdf
JelitaMeizeraWellysy
 
TEORI-TEORI KEPEMIMPINAN (Tugas uas Kepemimpinan)
TEORI-TEORI KEPEMIMPINAN (Tugas uas Kepemimpinan)TEORI-TEORI KEPEMIMPINAN (Tugas uas Kepemimpinan)
TEORI-TEORI KEPEMIMPINAN (Tugas uas Kepemimpinan)
NurHalifah34
 
1.4.a.8. Koneksi Antar Materi Budaya Positif
1.4.a.8. Koneksi Antar Materi Budaya Positif1.4.a.8. Koneksi Antar Materi Budaya Positif
1.4.a.8. Koneksi Antar Materi Budaya Positif
emalestari711
 
Sejarah Rekam Medis, Perkembangan, Isi, Manfaat, dan Penyimpanannya PPT.pptx
Sejarah Rekam Medis, Perkembangan, Isi, Manfaat, dan Penyimpanannya PPT.pptxSejarah Rekam Medis, Perkembangan, Isi, Manfaat, dan Penyimpanannya PPT.pptx
Sejarah Rekam Medis, Perkembangan, Isi, Manfaat, dan Penyimpanannya PPT.pptx
LuhAriyani1
 

Recently uploaded (11)

HUKUM PERNIKAHAN DALAM ISLAM DAN DASAR HUKUMNYA.ppt
HUKUM PERNIKAHAN DALAM ISLAM DAN DASAR HUKUMNYA.pptHUKUM PERNIKAHAN DALAM ISLAM DAN DASAR HUKUMNYA.ppt
HUKUM PERNIKAHAN DALAM ISLAM DAN DASAR HUKUMNYA.ppt
 
PPT (EKOSISTEM) - Refandi Alim - Bahan Ajar Magang.pptx
PPT (EKOSISTEM) - Refandi Alim - Bahan Ajar Magang.pptxPPT (EKOSISTEM) - Refandi Alim - Bahan Ajar Magang.pptx
PPT (EKOSISTEM) - Refandi Alim - Bahan Ajar Magang.pptx
 
Materi Kuliah 3 - budaya populer & budaya massa.pptx
Materi Kuliah 3 - budaya populer & budaya massa.pptxMateri Kuliah 3 - budaya populer & budaya massa.pptx
Materi Kuliah 3 - budaya populer & budaya massa.pptx
 
PPT ASAS PERATURAN PERundang UNDANGAN.pptx
PPT ASAS PERATURAN PERundang UNDANGAN.pptxPPT ASAS PERATURAN PERundang UNDANGAN.pptx
PPT ASAS PERATURAN PERundang UNDANGAN.pptx
 
KOSP SD MODEL 1 - datadikdasmen.com.docx
KOSP SD MODEL 1 - datadikdasmen.com.docxKOSP SD MODEL 1 - datadikdasmen.com.docx
KOSP SD MODEL 1 - datadikdasmen.com.docx
 
Materi kuliah tEORI KOMUNIKASI PEMBANGUNAN.pptx
Materi kuliah tEORI KOMUNIKASI PEMBANGUNAN.pptxMateri kuliah tEORI KOMUNIKASI PEMBANGUNAN.pptx
Materi kuliah tEORI KOMUNIKASI PEMBANGUNAN.pptx
 
PPT PERTEMUAN 12 AUDIT KELOMPOK 7 KELAS A.pdf
PPT PERTEMUAN 12 AUDIT KELOMPOK 7 KELAS A.pdfPPT PERTEMUAN 12 AUDIT KELOMPOK 7 KELAS A.pdf
PPT PERTEMUAN 12 AUDIT KELOMPOK 7 KELAS A.pdf
 
tugas Ppkn_2024043274444_150222_0000.pdf
tugas Ppkn_2024043274444_150222_0000.pdftugas Ppkn_2024043274444_150222_0000.pdf
tugas Ppkn_2024043274444_150222_0000.pdf
 
TEORI-TEORI KEPEMIMPINAN (Tugas uas Kepemimpinan)
TEORI-TEORI KEPEMIMPINAN (Tugas uas Kepemimpinan)TEORI-TEORI KEPEMIMPINAN (Tugas uas Kepemimpinan)
TEORI-TEORI KEPEMIMPINAN (Tugas uas Kepemimpinan)
 
1.4.a.8. Koneksi Antar Materi Budaya Positif
1.4.a.8. Koneksi Antar Materi Budaya Positif1.4.a.8. Koneksi Antar Materi Budaya Positif
1.4.a.8. Koneksi Antar Materi Budaya Positif
 
Sejarah Rekam Medis, Perkembangan, Isi, Manfaat, dan Penyimpanannya PPT.pptx
Sejarah Rekam Medis, Perkembangan, Isi, Manfaat, dan Penyimpanannya PPT.pptxSejarah Rekam Medis, Perkembangan, Isi, Manfaat, dan Penyimpanannya PPT.pptx
Sejarah Rekam Medis, Perkembangan, Isi, Manfaat, dan Penyimpanannya PPT.pptx
 

Dicoding Developer Coaching #36: Android | Pentingnya Performa pada Aplikasi Android

  • 1. Pentingnya Performa pada Aplikasi Android Ahmad Arif Faizin Google Associate Android Developer, Curriculum Developer Dicoding
  • 3. Report ● User akan uninstall ketika: ○ 36% karena baterai boros ○ 50.6 % karena menghabiskan memori ○ 62 % karena ada crash error ● User akan blame aplikasinya + juga brand company-nya https://www.dotcominfoway.com/blog/infographic-why-users-uninstall-your-app/#gref
  • 4. Basic Performance Test ● Test Umum: Tes oleh diri sendiri dan internal ● User perception : Tanyakan ke user (early adopter/beta tester) dan tanyakan bagaimana pendapatnya ● Coba di low-end devices : Dengan spesifikasi dan RAM paling minimum ● Monkey testing : Coba dengan random input dan behaviour untuk tahu apakah aplikasi akan crash
  • 5. User Expectation ● Loadingnya Cepat ● Animasinya smooth ● Nggak boros baterai ● Lancar nggak ada crash
  • 7. 60 FPS Rule 1000 ms / 60 frames = 16.666 ms/frame
  • 9. Enable GPU Rendering 1. Settings 2. Developer Options 3. Monitoring 4. Profile GPU Rendering 5. On screen as bars. 6. Buka aplikasi yang ingin dilihat. Bagaimana Tahu > 16 ms
  • 10. Hasil GPU Rendering ● Makin tinggi makin lambat ● Batas 16 ms ada di garis hijau ● Setiap warna merupakan rendering stages
  • 11.
  • 12.
  • 14. Enable GPU Overdraw 1. Settings 2. Developer Options 3. Hardware accelerated rendering 4. Debug GPU Overdraw 5. On screen as bars. 6. Buka aplikasi yang ingin dilihat.
  • 16. ● Hapus background yang tidak digunakan. ○ Di ImageView. ○ Di Root Layout ● Flattening View Hierarchy dengan ConstraintLayout ● Pakai Clip custom view. ● Kurangi penggunaan transparansi (alpha rendering) pada view. ● Minimalisir overlap. Minimize Overdraw
  • 18.
  • 19. ● Thread Management ● Data Structure ● Algorithm Tips Computing
  • 21.
  • 22.
  • 23. Stack Memory & Heap Memory
  • 24.
  • 25.
  • 28. ● Unregister broadcast receiver / listener di onStop setelah register di onStart. ● Jangan reference View objects: ○ Dari luar UI thread ○ Di async callbacks ○ Dari static objects ● Jangan alokasikan objek di inner loop ● Jangan alokasikan objek di onDraw ● Gunakan Application Context di Singleton, daripada Activity Context. ● Jangan gunakan inner class di Activity/Fragment. Avoid Memory Leak
  • 29. LeakCanary ● Tambah dependency dependencies { ... debugImplementation 'com.squareup.leakcanary:leakcanary- android:2.4' } ● Jalankan aplikasi, kemudian keluar ke home dan masuk lagi. ● Jika ada memory leak, akan muncul notifikasi dan menganalisis memorinya
  • 30. LeakCanary Result ● Nama Activity yang leak akan muncul di atas ● Jika statusnya UNKNOWS, di sini lah awal mula leak muncul ● Biasanya di akhir point, Leak Canary akan ngasih solusi di mana suatu object harus dibersihkan.
  • 31.
  • 32. ● Offline-first architecture. Simpan data ke lokal dulu jika memungkinkan. ● Jangan sering-sering sinkron ke server, Gunakan FCM (Firebase Cloud Messaging untuk kasih tau ke device kalau ada update di server. ● Gunakan Wakelock/Timer seperlunya. ● Gunakan sensor yang dibutuhkan saja. ● Lakukan koneksi yang yang lama hanya ketika terhubung ke Wi-Fi, seperti download film atau backup foto. ● Jangan langsung eksekusi, jika bisa ditunda. Battery Best-Practice