Perbaikan kedua yang menargetkan Samsung Galaxy A06 dalam dua hari. Versi 1.0.10 yang dirilis kemarin memperbaiki crash saat startup pada perangkat ini; baru beberapa jam setelah 1.0.10 terpasang, masalah baru muncul melalui Google Play Console — kali ini sebuah ANR (aplikasi macet selama beberapa detik). Laporan yang rinci memungkinkan perbaikan cepat, dan versi ini juga memperbaiki masalah tampilan efek neon pada ikon yang tidak muncul di drawer.
1.0.11 — ANR Startup pada Samsung Galaxy A06
Gejala
Pada Samsung Galaxy A06 (Android 16), saat pertama kali menjalankan Sola setelah instalasi, aplikasi macet selama 5 hingga 6 detik sebelum Android menampilkan kotak dialog "Sola tidak merespons — Tunggu / Paksa Berhenti". Berbeda dengan crash pada 1.0.10, aplikasi tidak tertutup secara tiba-tiba: aplikasi hanya tidak dapat digunakan selama beberapa detik.
Secara teknis, trace yang dilaporkan oleh Play Console menunjukkan ANR bertipe "Input dispatching timed out" — Android memantau agar thread utama memproses event input (tap, swipe) dalam waktu kurang dari 5 detik. Jika melebihi itu, sistem menganggap aplikasi macet dan menawarkan pengguna untuk menutupnya.
Penyebab
Samsung Galaxy A06 dilengkapi dengan prosesor kelas pemula (Unisoc T606, empat inti 1,6 GHz) dan GPU yang sederhana. Perangkat ini berkali-kali lipat lebih lambat dibandingkan perangkat yang biasa digunakan untuk menguji Sola (Pixel 8 Pro, Pixel Tablet).
Saat home screen dimulai, Sola memuat semua ikon aplikasi yang ada di grid (biasanya 15 hingga 25 aplikasi, ditambah yang tersimpan di dalam folder) dalam satu kali proses. Setiap ikon melalui PackageManager.getApplicationIcon(), sebuah metode Android yang membuka APK target, membaca definisi XML ikon adaptif, lalu mendekode dua gambar bitmap (lapisan latar depan dan latar belakang).
Pada Pixel 8 Pro, setiap proses dekode memakan waktu sekitar sepuluh milidetik — 20 ikon ditampilkan dalam waktu kurang dari 300 ms, sama sekali tidak terlihat. Pada A06, proses dekode yang sama memakan waktu 200 hingga 500 milidetik per ikon. 20 ikon × 300 ms = 6 detik macet total. Padahal, pemuatan ini terjadi pada thread utama (thread yang memproses tap pengguna), yang memicu ANR.
Perbaikan
Flow yang mengisi grid home screen kini dibatasi ke pool thread input/output melalui flowOn(Dispatchers.IO). Secara konkret, semua proses dekode ikon sekarang dijalankan secara paralel pada thread khusus. Hanya daftar akhir (setelah 20 ikon selesai didekode) yang sampai ke thread utama untuk ditampilkan. Thread utama tetap responsif setiap saat, bahkan selama pemuatan berat.
Perbaikan yang sama diterapkan pada flow yang mendaftar folder beserta aplikasi di dalamnya, yang mengalami masalah serupa.
Telah diverifikasi pada emulator yang mereplikasi spesifikasi Galaxy A06 (720×1600, 260 dpi, Android 16, GPU perangkat lunak untuk mensimulasikan kelambatan): home screen tampil secara instan, tidak ada ANR yang terpicu.
Efek Neon Ikon Tidak Muncul di Drawer
Gejala
Saat memilih paket ikon bawaan (Pixelarticons, Lucide, Game-Icons…) dengan opsi "efek neon" diaktifkan, ikon menampilkan halo cahaya dengan baik di home screen, di folder, dan di dock. Namun di drawer aplikasi, halo tersebut menghilang: ikon tampil dengan warna datar, tanpa efek neon.
Penyebab
Efek neon diimplementasikan melalui sebuah drawable-wrapper yang membungkus ikon asli untuk menambahkan halo saat proses rendering. Ada dua jalur kode berbeda yang memuat ikon aplikasi: satu untuk home screen dan folder, satu lagi untuk drawer (yang mendaftar semua aplikasi terpasang sekaligus).
Jalur yang digunakan oleh home screen sudah memiliki pengecualian khusus untuk mempertahankan wrapper ini. Jalur yang digunakan oleh drawer tidak memiliki pengecualian tersebut: jalur ini selalu memanggil constantState.newDrawable() untuk membuat instance baru dari drawable, yang memiliki efek samping melepas wrapper neon dan hanya menyisakan ikon datar di bawahnya.
Perbaikan
Pengecualian NeonDrawable telah diterapkan pada jalur drawer: ketika ikon yang dimuat adalah wrapper neon, ikon tersebut dipertahankan apa adanya alih-alih di-clone. Efek halo kini dipertahankan di drawer seperti di tempat lainnya.
Tiga unit test telah ditambahkan untuk mengunci kedua jalur (home screen dan drawer) serta perilaku sebaliknya (drawable klasik harus tetap di-clone untuk menghindari efek samping saat mengganti paket). Regresi serupa di masa depan akan terdeteksi lebih awal.
Cara Mendapatkan Pembaruan
1.0.11 diluncurkan secara bertahap melalui Play Store (dimulai dari 20% pengguna, kemudian meningkat bertahap hingga 100% dalam 24 hingga 48 jam). Pembaruan ini seharusnya tersedia untuk semua orang dalam dua hari. Anda juga dapat memaksa pengecekan pembaruan dari aplikasi Play Store, bagian "Kelola aplikasi & perangkat".
Buka di Google Play