Mobil Uygulama Performans Optimizasyonu 2026: Başlatma Süresi ve Pil Tüketimi
Bir mobil uygulamanın başarısını belirleyen en kritik iki performans metriği başlatma süresi ve pil tüketimidir; çünkü kullanıcılar yavaş açılan ve telefonu ısıtan uygulamaları sessizce siler. Doğrudan yanıt: 2026’da kabul edilen hedef, soğuk başlatmada ilk karenin 5 saniyenin altında (Google’ın kötü eşiği), ideal olarak 1,5 saniyenin altında olması; pil tarafında ise uygulamanın arka planda gereksiz uyanma (wakelock) ve ağ yoklamasından kaçınmasıdır. Google’ın verilerine göre başlatma süresi 1 saniye arttığında dönüşüm oranı %20’ye kadar düşer ve Android Vitals’ta “yavaş soğuk başlatma” eşiği 5 saniyedir. Optimizasyonun üç ana cephesi vardır: başlatma yolundaki gereksiz işi kaldırmak (lazy init, baseline profiles), render maliyetini düşürmek (jank ve overdraw azaltma) ve enerji bütçesini yönetmek (WorkManager batching, wakelock disiplini). Doğru ölçümle bu üç cephe sistematik iyileştirilir.

Başlatma Süresi: Soğuk, Sıcak ve Ilık Başlatma
Başlatma performansı üç tipte ölçülür ve her biri farklı optimizasyon gerektirir. Soğuk başlatma (cold start) uygulama tamamen kapalıyken açılır ve en pahalı olanıdır: süreç oluşturma, Application.onCreate, ilk Activity ve ilk kare çizimi tamamı buna dahildir. Sıcak başlatma (warm start) süreç hâlâ bellekteyken, ılık başlatma ise arada bir noktadadır. Google’ın Android Vitals eşikleri nettir: soğuk başlatma 5 saniye, sıcak başlatma 2 saniye, ılık başlatma 1,5 saniyenin altında olmalıdır.
2026’nın en etkili tekniği Baseline Profiles‘tır. Google’ın açıkladığına göre, kritik kullanıcı yollarını önceden derlenmiş (AOT) profillere bağlayan Baseline Profiles, soğuk başlatmayı ortalama %30, bazı uygulamalarda %40’a kadar hızlandırır. Tekniklerin kapsamlı bir referansı için mobil uygulama performans optimizasyonu yazısı temel teşkil eder.
- Soğuk başlatma hedefi: <1,5 sn ideal, <5 sn Google kötü eşiği.
- Baseline Profiles kazancı: %30-40 başlatma hızlanması.
- App Startup kütüphanesi: ContentProvider çoğalmasını tek başlatıcıda toplar.
Üç başlatma tipinin farkını net kavramak, doğru metriği hedeflemek için şarttır; bir uygulamanın “yavaş açılıyor” algısı çoğu zaman soğuk başlatmadan kaynaklanır, çünkü kullanıcı uygulamayı ilk kez veya uzun aradan sonra açtığında bu yolu deneyimler. Aşağıdaki tablo üç tipi ve Google’ın Android Vitals eşiklerini karşılaştırır.
| Başlatma Tipi | Durum | Yapılan İş | İdeal | Kötü Eşik |
|---|---|---|---|---|
| Soğuk (cold) | Süreç kapalı | Süreç + onCreate + ilk kare | <1,5 sn | >5 sn |
| Ilık (warm) | Kısmen bellekte | Activity yeniden oluşturma | <1 sn | >2 sn |
| Sıcak (hot) | Süreç bellekte | Activity öne getirme | <0,5 sn | >1,5 sn |
| İlk kare (TTID) | İlk çizim | Görünür içeriğe kadar | Düşük | Yavaş algı |
| Tam görünür (TTFD) | Veri yüklü | Kullanılabilir ekran | Düşük | İçerik gecikmesi |
Başlatma Yolunu Hafifletme Teknikleri
Başlatma yolu (startup path) optimizasyonunun özü, ilk kareye kadar yapılan işi minimuma indirmektir. En sık görülen hata, tüm SDK’ların (analitik, crash reporting, reklam) Application.onCreate içinde senkron başlatılmasıdır; bu, ilk karenin gecikmesine yol açar. Jetpack App Startup kütüphanesi, her SDK’nın kendi ContentProvider’ını kaydetmesini engelleyerek başlatma ek yükünü tek noktada toplar.

Tembel başlatma (lazy initialization) ile yalnızca ilk ekranda gereken bileşenler yüklenir, gerisi ertelenir. Flutter ve KMP gibi çapraz platform yapılarda framework başlatma ek yükü de hesaba katılmalıdır; bu konuda Kotlin Multiplatform vs Flutter karşılaştırması framework-özel başlatma maliyetlerini ele alır. Ölçüm tarafında Macrobenchmark kütüphanesi, başlatmayı CI/CD’de regresyona karşı izlemeyi sağlar. Bir başka kritik nokta, splash ekranı API’sinin doğru kullanımıdır: özel splash Activity’leri başlatma yoluna gereksiz adım eklerken, Android 12+ SplashScreen API’si bu geçişi sistem seviyesinde optimize eder.
Pil Tüketimi: Enerji Bütçesinin Yönetimi
Pil optimizasyonu, kullanıcının “bu uygulama pilimi bitiriyor” algısını engellemekle ilgilidir; Android’in Battery Historian ve iOS’un Energy Log araçları bu profili çıkarır. En büyük enerji tüketicileri sırayla: ekran (parlaklık ve render), hücresel/Wi-Fi radyo, GPS/konum ve CPU/wakelock’lardır. Google’ın araştırmasına göre kötü yönetilen arka plan işleri ve sık ağ yoklaması, pil tüketiminin önde gelen sebebidir.
2026’da en kritik disiplin arka plan işi yönetimidir. WorkManager, işleri toplayıp (batching) cihaz şarjdayken veya Wi-Fi’deyken çalıştırarak radyo uyanmalarını azaltır. Android’in Doze modu ve App Standby, uygulamaları periyodik bakım pencerelerine zorlar. Konum servisi en pahalı tüketicilerden biridir: sürekli GPS yerine fused location ve uygun doğruluk seviyesi seçmek tüketimi belirgin düşürür. Radyo uyanmalarının pil üzerindeki etkisi sıklıkla hafife alınır; hücresel modem, bir veri aktarımı sonrası “tail time” boyunca yüksek güç durumunda kalır, bu yüzden çok sayıda küçük istek tek bir toplu istekten çok daha fazla pil tüketir.
Enerji bütçesini doğru yönetmek için, hangi bileşenin ne kadar tükettiğini ve doğru azaltma stratejisini bilmek gerekir. Aşağıdaki tablo başlıca pil tüketicilerini, göreli etkilerini ve doğrulanmış azaltma yöntemlerini özetler.
| Tüketici | Göreli Etki | Tipik Sorun | Azaltma Yöntemi |
|---|---|---|---|
| Ekran | En yüksek | Parlaklık + sürekli render | Karanlık tema, render azalt |
| Hücresel/Wi-Fi radyo | Yüksek | Sık küçük istek (tail time) | İstekleri toplama (batching) |
| GPS / konum | Yüksek | Sürekli yüksek doğruluk | Fused location, geofencing |
| CPU / wakelock | Orta-Yüksek | Serbest bırakılmayan kilit | WorkManager constraint |
| Arka plan işi | Orta | Toplanmamış çalıştırma | Doze, batch, şarjda çalıştır |
| Sensör/kamera | Değişken | Açık bırakılan oturum | Yaşam döngüsünde kapatma |
Performans Hedefleri ve Eşikler Tablosu
| Metrik | İdeal | Kabul Edilebilir | Kötü (Google eşiği) | Ölçüm Aracı |
|---|---|---|---|---|
| Soğuk başlatma | <1,5 sn | 1,5-3 sn | >5 sn | Android Vitals |
| Sıcak başlatma | <0,5 sn | 0,5-1,5 sn | >2 sn | Macrobenchmark |
| Yavaş kare (jank) | <%1 | %1-5 | >%5 | Frame Timeline |
| Donmuş kare (>700 ms) | <%0,1 | %0,1-0,5 | >%0,5 | Android Vitals |
| Arka plan pil tüketimi | Minimal | Orta | “Aşırı” | Battery Historian |
| Uygulama boyutu | <50 MB | 50-150 MB | >200 MB | APK Analyzer |

Render Performansı: Jank ve Overdraw Azaltma
Akıcılık (smoothness), kullanıcının uygulamayı “hızlı” hissetmesinin temelidir. 60 Hz ekranda her karenin 16,6 ms, 120 Hz ekranda 8,3 ms içinde çizilmesi gerekir; bu süre aşıldığında “jank” (takılma) oluşur. Android Vitals, karelerin %5’inden fazlası yavaşsa uygulamayı işaretler. En yaygın jank kaynakları: ana iş parçacığında ağır işlem, aşırı çizim (overdraw), karmaşık layout hiyerarşisi ve büyük bitmap dekodlamadır.
Çözüm cephaneliği: ağır işi arka plan iş parçacığına (coroutine/dispatcher) taşımak, RecyclerView/LazyColumn ile görünüm geri dönüşümü, görsel önbellekleme (Coil/Glide) ve overdraw’ı GPU profiling ile tespit etmektir. Compose tarafında gereksiz recomposition’ı önlemek için stable parametreler ve derived state kullanılır. Performans bütçesi mimariyle de ilgilidir; BFF deseni ile ağ yükünü azaltmak istemci render maliyetini de düşürür.
120 Hz ekranların yaygınlaşması, jank bütçesini daha da daralttı: 60 Hz’de bir kare için 16,6 ms varken, 120 Hz’de bu süre 8,3 ms’ye iner ve aynı işlem yarı sürede tamamlanmak zorundadır. Bu yüzden yüksek yenileme hızlı cihazlarda akıcılık daha hassas bir mühendislik konusu haline gelir; bir liste kaydırma sırasında ana iş parçacığında yapılan küçük bir senkron iş bile fark edilir takılmaya yol açabilir. Android’in Frame Timeline aracı, hangi karelerin bütçeyi aştığını ve nedenini (uzun ölçüm, çizim veya GPU bekleme) ayrıştırarak gösterir; bu sayede optimizasyon tahmin yerine veriyle yönlendirilir. Pratikte en yüksek getirili kural değişmez: kullanıcı etkileşimi sırasında ana iş parçacığında hiçbir disk, ağ veya ağır hesaplama işi yapılmamalı, hepsi arka plana taşınmalıdır.
Render zincirinde sık göz ardı edilen bir maliyet de listelerin başlangıç performansıdır. Bir RecyclerView veya LazyColumn ilk açıldığında, görünür öğeleri oluşturmak için yapılan layout ve measure işlemleri ana iş parçacığını meşgul eder; her öğe için 16,6 ms bütçesinin aşılması ilk kaydırmada belirgin takılma yaratır. Çözüm, öğe düzenlerini düz (flat) tutmak, iç içe ağırlıklı (nested weighted) LinearLayout’lardan kaçınmak ve ConstraintLayout ile derinliği azaltmaktır. Compose’da ise her öğeye stabil bir key vermek, kaydırma sırasında gereksiz yeniden oluşturmayı engeller ve liste akıcılığını %20-30 artırabilir.
Ölçüm ve İzleme: Veri Olmadan Optimizasyon Yok
Optimizasyonun ilk kuralı: tahmin etme, ölç. Android Studio Profiler (CPU, bellek, enerji), Perfetto/systrace (sistem geneli trace), Macrobenchmark (CI’da başlatma/jank ölçümü) ve Firebase Performance Monitoring (saha verisi) temel araçlardır. iOS tarafında Instruments (Time Profiler, Energy Log) eşdeğer rolü üstlenir. Laboratuvar ölçümü ile saha (field) verisi arasındaki farkı kavramak kritiktir: geliştirici cihazı genellikle üst segmenttir ve gerçek kullanıcı tabanının önemli bir bölümü 2-4 GB RAM’li, eski yonga setli cihazlar kullanır. Bu yüzden Android Vitals’taki gerçek kullanıcı yüzdelik dilimleri (p90, p99), tek bir test cihazındaki ölçümden çok daha güvenilir bir gerçeklik sunar. Aşağıdaki tablo optimizasyon tekniklerinin tipik kazançlarını özetler.
| Teknik | Hedef Metrik | Tipik Kazanç | Uygulama Zorluğu |
|---|---|---|---|
| Baseline Profiles | Soğuk başlatma | %30-40 hızlanma | Düşük |
| Lazy / App Startup init | Başlatma yolu | %15-25 hızlanma | Orta |
| WorkManager batching | Pil (arka plan) | %20-40 az tüketim | Orta |
| Overdraw / layout düzeltme | Jank | %10-30 daha az takılma | Orta |
| R8 / kod küçültme | Uygulama boyutu | %20-50 küçülme | Düşük |
| Görsel önbellek (Coil/Glide) | Bellek + render | %15-25 az bellek | Düşük |

Tipik Sorunlar ve Çözümleri
Performans projelerinde ekipler genellikle aynı hatalara düşer; çoğu, ölçüm yerine tahmine dayanmaktan kaynaklanır. En sık karşılaşılan sorunlar ve çözümleri şunlardır:
- SDK’ları senkron başlatma: Tüm kütüphaneler onCreate’te yüklenir, başlatma uzar. Çözüm: App Startup + lazy init ile erteleme.
- Ana iş parçacığında ağ/disk: ANR ve jank kaynağı. Çözüm: Coroutine/Dispatchers.IO ile arka plana taşıma.
- Wakelock sızıntısı: Serbest bırakılmayan wakelock pili bitirir. Çözüm: WorkManager constraint’leri ve wakelock denetimi.
- Sürekli yüksek doğruluk GPS: Konum servisi pili hızla tüketir. Çözüm: Fused location, gerekli doğruluk seviyesi, geofencing.
- Aşırı recomposition (Compose): Gereksiz yeniden çizim CPU yakar. Çözüm: Stable tipler, key kullanımı, derivedStateOf.
- Optimize edilmemiş görseller: Büyük bitmap’ler bellek ve render maliyeti çıkarır. Çözüm: WebP/AVIF, doğru boyutlandırma, önbellekleme.
Sonuç
2026’da mobil performans optimizasyonu bir lüks değil, kullanıcı tutma ve dönüşümün doğrudan belirleyicisidir; 1 saniyelik başlatma gecikmesi dönüşümü %20’ye kadar düşürür. Strateji üç cephede yürütülür: başlatma yolunu Baseline Profiles ve lazy init ile hafifletmek, render’ı jank/overdraw azaltarak akıcı tutmak ve pili WorkManager disipliniyle korumak. Hiçbir teknik ölçüm olmadan uygulanmamalıdır. Pratik tavsiye: Önce Android Vitals ve Macrobenchmark ile mevcut soğuk başlatma ve jank yüzdenizi temel alın; en yüksek etkili tek değişiklik olan Baseline Profiles’ı ekleyip ölçün, ardından sadece veriyle kanıtlanan darboğazları sırayla giderin.
Sıkça Sorulan Sorular
Soğuk başlatma süresini en hızlı nasıl iyileştiririm?
En yüksek getirili tek değişiklik Baseline Profiles eklemektir; Google verilerine göre soğuk başlatmayı %30-40 hızlandırır ve uygulama tarafında kod değişikliği gerektirmez. İkinci adım, Application.onCreate içinde senkron başlatılan SDK’ları Jetpack App Startup ve lazy initialization ile ertelemektir. Bu iki teknik birlikte uygulandığında, ilk karenin ekrana gelme süresi çoğu uygulamada belirgin şekilde kısalır.
Hangi araçlarla mobil performansı ölçmeliyim?
Geliştirme sırasında Android Studio Profiler (CPU/bellek/enerji) ve Perfetto trace; CI/CD’de regresyon yakalamak için Macrobenchmark; sahadaki gerçek kullanıcı verisi için Android Vitals ve Firebase Performance Monitoring kullanılır. iOS tarafında Xcode Instruments (Time Profiler ve Energy Log) eşdeğerdir. Kural net: optimizasyona başlamadan önce mutlaka bir temel ölçüm (baseline) alın, aksi halde iyileştirmenin etkisini kanıtlayamazsınız.
Uygulamamın pil tüketimini en çok ne artırır?
En büyük tüketiciler sırayla ekran (parlaklık ve render), hücresel/Wi-Fi radyo uyanmaları, sürekli yüksek doğruluk GPS ve serbest bırakılmayan wakelock’lardır. Pratikte en sık görülen sorun, arka plan işlerinin toplanmadan tek tek çalıştırılarak radyoyu sürekli uyandırmasıdır. WorkManager ile işleri batch’leyip cihaz şarjda veya Wi-Fi’deyken çalıştırmak ve fused location kullanmak tüketimi %20-40 azaltır.
Jank (takılma) neden olur ve nasıl önlenir?
Jank, bir karenin ekran yenileme bütçesi içinde (60 Hz’de 16,6 ms, 120 Hz’de 8,3 ms) çizilememesidir. Başlıca sebepleri ana iş parçacığında ağır işlem yapmak, aşırı çizim (overdraw), derin layout hiyerarşisi ve büyük görsel dekodlamadır. Önlemek için ağır işi coroutine ile arka plana taşıyın, liste görünümlerinde geri dönüşüm (RecyclerView/LazyColumn) kullanın, overdraw’ı GPU profiling ile tespit edin ve Compose’da gereksiz recomposition’ı stable tiplerle engelleyin.
Uygulama boyutu performansı etkiler mi?
Evet, hem dolaylı hem doğrudan. Büyük APK/AAB dosyaları indirme ve kurulum oranını düşürür; Google verileri her 6 MB artışın kurulum dönüşümünü ölçülebilir biçimde azalttığını gösterir. Ayrıca büyük uygulamalar daha fazla bellek ve disk kullanır. R8 ile kod küçültme, kullanılmayan kaynakların temizlenmesi, App Bundle ile cihaza özel teslimat ve WebP/AVIF görseller boyutu %20-50 azaltarak hem dönüşümü hem çalışma zamanı performansını iyileştirir.









Ömer ÖNAL
Haziran 14, 2026Müşterilerime hep aynı şeyi söylüyorum: tahmin etme, ölç. Optimizasyona başlamadan önce Android Vitals ve Macrobenchmark ile mevcut soğuk başlatma ve jank yüzdeni temel al. En yüksek getirili tek hamle Baseline Profiles; kod hiç değişmeden başlatmayı %30-40 hızlandırır, hemen ekle ve etkisini ölç. Sonra yalnızca veriyle kanıtlanan darboğazları sırayla gider. Pil tarafında en sık görülen hata arka plan işlerini batch’lemeden tek tek çalıştırmak; WorkManager constraint’leriyle gereksiz radyo uyanmalarını kes.