Di atas kertas, kode yang bersih (*clean code*) dan arsitektur yang rapi adalah idaman setiap developer. Namun di dunia nyata, aplikasi yang indah akan langsung ditinggalkan pengguna jika konsumsi baterainya boros atau animasi layarnya sering tersendat (*jank*).

1. Frame Budget 16.6ms: Batas Suci Pengalaman Mulus

Layar smartphone standar me-refresh tampilan sebanyak 60 kali per detik. Artinya, CPU dan GPU perangkat hanya memiliki waktu maksimal 16.6 milidetik untuk menyelesaikan seluruh siklus: memproses input sentuhan, menjalankan kalkulasi state, menyusun pohon tata letak (*layout*), dan menggambar piksel ke layar (*paint*).

Jika sebuah kalkulasi matematika (seperti parsing JSON ribuan transaksi upah atau enkripsi PDF) memakan waktu 25ms di UI thread utama, maka satu frame akan terlewat (*dropped frame*), dan mata pengguna akan menangkap gerakan patah-patah yang mengganggu.

// Mengalihkan Komputasi Berat ke Background Worker (Dart Isolate / Swift DispatchQueue) // Di Flutter: Future> processHeavyPayroll(List shifts) async { // compute() menjalankan fungsi di thread Isolate terpisah, membebaskan UI thread! return await compute(_calculatePayrollIsolate, shifts); } // Di iOS (Swift): func processHeavyPayroll(shifts: [RawShift]) async -> [SalarySummary] { return await Task.detached(priority: .userInitiated) { // Berjalan di thread background, tidak memblokir MainActor return calculatePayrollLogic(shifts) }.value }

2. Pencegahan Kebocoran Memori (*Memory Leak Prevention*)

Kebocoran memori pada aplikasi mobile sering kali terjadi bukan karena objek besar, melainkan karena referensi tersembunyi yang tidak dilepaskan:

  • Uncancelled Stream/Timer Listeners: Timer kalkulasi shift yang tidak di-cancel saat halaman ditutup akan terus hidup di memori dan menguras baterai.
  • Retain Cycles pada Closure: Selalu gunakan [weak self] di Swift untuk mencegah dua objek saling menahan referensi secara permanen.
  • Image Caching Resizing: Jangan pernah me-render foto beresolusi 4000x3000 piksel ke dalam wadah avatar 60x60 piksel tanpa decoding thumbnail terlebih dahulu.

3. Kesimpulan: Rekayasa yang Bertanggung Jawab

Aplikasi mobile kelas dunia bukanlah aplikasi yang menggunakan fitur paling rumit, melainkan aplikasi yang paling menghormati keterbatasan sumber daya perangkat pengguna: memori, baterai, dan waktu respon antarmuka.