Sorunsuz, kararlı ve pilden tasarruf sağlayan bir uygulama deneyimi sunmak için kararlılık, kullanıcı arayüzü oluşturma, bellek tüketimi, arka plan çalışması, başlatma gecikmesi ve derleme optimizasyonu gibi alanlarda yaygın performans darboğazlarının belirlenip çözülmesi gerekir.
Bu bölümdeki kılavuzlarda, her sorun türü için temel Android platform davranışları açıklanmakta ve Android Studio Profiler, Perfetto, Logcat ve ApplicationExitInfo gibi araçlar kullanılarak sorunların nasıl teşhis edileceği, profillendirileceği ve düzeltileceği adım adım anlatılmaktadır.
Kararlılık
- ANR'ler: Engellenen kullanıcı arayüzü iş parçacıklarının, ana iş parçacığı G/Ç'sinin, kilit çekişmesinin veya yavaş yayın alıcılarının neden olduğu uygulama yanıt vermiyor (ANR) hatalarını teşhis edin ve düzeltin.
- Kilitlenmeler: Yığın izlemeleri okuyun, Logcat çıkışını inceleyin ve işlenmemiş istisnaları ve yerel sinyalleri önleyin.
Oluşturma ve başlatma
- Yavaş oluşturma: Pahalı düzenler, bağlama geçişleri veya ana iş parçacığı duraklamalarından kaynaklanan, bırakılan ya da dondurulan kullanıcı arayüzü çerçevelerini (
>16msve>700ms) belirleyip düzeltin. - Yavaş oturumlar (yalnızca oyunlar):
SurfaceFlingerile kare hızını ölçün ve Android Frame Pacing (Swappy), Vulkan ve Android Dynamic Performance Framework (ADPF) kullanarak oyun kare hızlarını optimize edin. - Uygulama başlatma süresi: Yeni, sıcak ve hazır başlatma işlemlerinin iç işleyişini anlayın, ilk ekran görüntülenene kadar geçen süreyi (TTID) ve tam ekran görüntülenene kadar geçen süreyi (TTFD) ölçün ve başlatma işlemlerini optimize edin.
Bellek yönetimi
- Düşük bellek sonlandırıcılar (LMK'ler): Android düşük bellek sonlandırıcı arka plan programının (
lmkd) işlemlereoom_adj_scoreüzerinden nasıl öncelik verdiğini ve Android Studio, Unity ve Unreal Engine'de bellekte kaplanan yerin nasıl profillendirildiğini öğrenin. - Bellek kullanımı (anonim RSS + takas): Uygulamanızın anonim yerleşik küme boyutunu (RSS) ve takas bellekte kaplanan yerini ön plan, hizmet ve arka plan durumlarında ölçüp azaltın.
- Bit eşlem bellek kullanımı: Aşırı büyük veya sızdırılmış bit eşlem ayırmalarını teşhis edin ve kullanıcı arayüzü bileşenleri arka plana taşındığında grafik arabelleklerini serbest bırakın.
Pil ve arka planda çalışma
- Aşırı sayıda uyanık kalma kilidi: Kısmi uyanık kalma kilitlerini uzun süre tutmaktan kaçının ve arka plan görevlerini
WorkManagerveyaJobScheduler'ye taşıyın. - Takılı kalan kısmi uyanık kalma kilitleri: Edinilen her kısmi uyanık kalma kilidinin tüm yürütme ve hata yollarında düzgün şekilde serbest bırakıldığından emin olun.
- Aşırı sayıda uyandırma: Kesin zamanlı alarm uyandırmalarını azaltın ve planlanmış arka plan çalışmalarını gruplandırın veya erteleyin.
- Aşırı düzeyde arka planda kablosuz ağ taraması: Arka planda kablosuz ağ tarama sıklığını en aza indirin ve pasif veya toplu konum ve bağlantı API'lerini kullanın.
- Aşırı düzeyde arka planda ağ kullanımı:
WorkManagerkullanarak arka plandaki mobil ağ aktarımlarını toplu olarak gerçekleştirin ve erteleyin. - Aşırı pil kullanımı: CPU, sensör ve radyo etkinliğini profillendirerek mobil ve Wear OS cihazlardaki pilin hızlı tükenmesini teşhis edin.
İzinler ve derleme optimizasyonu
- İzin reddetme: Çalışma zamanında izinleri bağlam içinde isteyin ve izin gerekçesini kullanıcılara net bir şekilde açıklayın.
- DEX kodu optimizasyonu: DEX boyutunu küçültmek ve çalışma zamanı performansını artırmak için R8 küçültme, karartma ve optimizasyon kurallarını yapılandırın.