ObsidianArpeggio
Kayıtlı Kullanıcı
Kamera uygulamaları, mobil cihazların en çok kullanılan ve en çok beklenti taşıyan özelliklerinden biridir. Fotoğraf çekerken ya da video kaydederken aniden donanması, hem kullanıcı deneyimini zedeleyip hem de cihazın genel performansını olumsuz etkileyebilir. Donma, sadece bir aksaklık değil, aynı zamanda cihazın donanım ve yazılım kaynaklarını verimli kullanmadığının bir işaretidir. Bu yüzden, donma sorununu çözmek, sadece bir hata ayıklama işlemi değil, aynı zamanda uygulamanın sürdürülebilirliğini ve kullanıcı memnuniyetini artırmak için kritik bir adımdır.
Kamera donmalarının temel sebepleri sıklıkla bellek yönetimi, CPU ve GPU yükleri, yazılım uyumsuzlukları ve çevresel faktörlerden kaynaklanır. Ancak her durum benzersizdir; bir cihazda çalışan bir optimizasyon, başka bir cihazda sorun yaratabilir. Bu nedenle, donma sorununu çözmek için hem sistematik bir analiz hem de esnek bir çözüm yaklaşımı gerekir. Aşağıdaki makalede, kamera uygulamasının donma sorununu derinlemesine inceleyecek, temel kavramları tanımlayacak, tarihsel gelişimi ve güncel durumu ele alacak, uzman görüşlerini paylaşıp pratik uygulamalarla gerçek hayat örnekleri sunacağız. Ayrıca sık yapılan hataları ve dikkat edilmesi gereken noktaları vurgulayarak, okuyuculara kapsamlı bir rehber sunacağız.
Bir kamera uygulamasında donma süreci, genelde üç aşamada gerçekleşir: önceden alınan görüntü akışının işlenmesi sırasında bellek tıkanıklığı, CPU/GPU yoğunluklu filtrelerin uygulanması sırasında sürecin bloklanması ve sistem kaynaklarının yetersizliği. Bu süreç, özellikle gerçek zamanlı filtreler, yüz tanıma, AR (Artırılmış Gerçeklik) efektleri gibi yüksek kaynak gerektiren işlemlerle birleştiğinde, donma olasılığı artar. Donmanın nedeni olarak, yazılım hataları, uyumsuz API sürümleri, donanım sınırlamaları ve çevresel faktörler sıklıkla gösterilir.
Kamera uygulamasının donmasını önlemek için, geliştiricilerin öncelikle sistem kaynaklarını izlemeleri ve yönetmeleri gerekir. Bu, gerçek zamanlı görüntü işleme sırasında bellek tüketimini kontrol etmek, CPU ve GPU kullanımını dengeli tutmak ve arka plan işlemlerini optimize etmek anlamına gelir. Aynı zamanda cihazın donanım sınırlarını anlamak ve yazılımın bu sınırlar içinde çalışmasını sağlamak, donma riskini minimuma indirir.
Bellek sızıntılarını tespit etmek için Android Studio Profiler veya Xcode Instruments gibi araçlar kullanılabilir. Profiling sırasında, “Java Heap” veya “Allocations” sekmesinde artan bellek kullanımını izlemek, sızıntıların nereden kaynaklandığını gösterir. Ek olarak, “Bitmap” nesnelerinin “recycle()” metodunu çağırmak, bellek havuzundaki boş alanı geri kazanmak için kritik öneme sahiptir. Ancak, “recycle()” çağrısının yalnızca kullanılmayan bitmap'lerde yapılması gerekir; aksi halde “Canvas” veya “ImageView” gibi nesneler hatalı görüntü gösterebilir.
Bir diğer yaygın hatalı uygulama, “WeakReference” yerine “SoftReference” kullanarak bitmap nesnelerini tutmaktır. “SoftReference”, bellek yetersizliği durumunda otomatik olarak temizlenir, ancak kullanım süresi kadim nesnelerin hâlâ bellek üzerinde kalmasına neden olabilir. Bu yüzden, uygulama içinde “BitmapFactory.Options.inMutable” kullanarak değiştirilebilir bitmap'ler oluşturmak, bellek yönetimini kolaylaştırır.
CPU yükünü azaltmak için, görüntü işleme algoritmalarını mümkün olduğunca hafif tutmak gerekir. Örneğin, “Gaussian Blur” yerine “Box Blur” gibi daha az kaynak tüketen filtreler tercih edilebilir. Ayrıca, “RenderScript” veya “NDK” ile native kod kullanarak, CPU üzerindeki iş yükünü azaltmak mümkündür. GPU tarafında, “OpenGL ES” veya “Metal” gibi düşük seviyeli API'lar, donanımın tam potansiyelini kullanarak yüksek performans sağlar. Ancak, GPU kullanımını izlemek için “GPU Profiler” araçları kullanmalı ve “Shader” optimizasyonları yapmalısınız.
Bir örnek olarak, 4K çözünürlükte video kaydı sırasında, GPU bellek sınırının aşılması sık sık donmaya yol açar. Bu durumda, video çözünürlüğünü 1080p'ye düşürmek veya “Frame Rate”'i 30 fps'e düşürmek, GPU üzerindeki baskıyı azaltır ve donma riskini düşürür.
Yazılım hataları da donma riskini artırır. Örneğin, “SurfaceTexture” üzerinde çok sayıda “ImageReader” nesnesi açmak, kaynak tüketimini artırır. Bu tip hataları önlemek için, API çağrılarını “try-catch” bloğu içinde tutmak ve hatalı durumlarda “onError” callback'lerini kullanmak gerekir. Ayrıca, “CameraX” gibi üst seviyeli API'lar, donanım uyumluluğunu otomatik olarak yönetir, fakat yine de “Device Compatibility List” (DCL) üzerinden uyumluluk kontrolü yapılmalıdır.
Bir diğer önemli nokta, “Fragment” veya “Activity” yaşam döngüsünde kamera kaynaklarını doğru şekilde açmak ve kapatmaktır. Örneğin, “onPause” veya “onStop” içinde kamera oturumunu sonlandırmak, kaynak sızıntılarını engeller. Aksi takdirde, kameranın “Preview” akışı devam ederken uygulama kapatıldığında donma oluşabilir.
Örneğin, 60 fps’lik bir video kaydı sırasında, cihazın sıcaklığı 85°C seviyesine ulaşabilir. Bu noktada, işletim sistemi CPU frekansını düşürür ve GPU önceliklerini yeniden ayarlar. Kısa süreli bir donma yaşanabilir. Bu sorunu önlemek için, “Frame Rate”’i azaltmak, “Resolution”’ı düşürmek ve “Hardware Acceleration”’ı optimize etmek gerekir. Ayrıca, “Battery Saver” modu etkinleştirildiğinde, cihazın performansı düşürülür; bu da donma riskini artırır. Öyleyse, uygulama içinde “Battery Level”’ı izlemek ve gerekirse düşük güç modunda çalışmayı izole etmek önemlidir.
Bir başka önemli faktör, “Camera Flash” veya “LED” kullanımının sıklığıdır. Sürekli LED’lerin yanması, cihazın ısı dağılımını bozar ve donma riskini artırır. Bu durumda, “Flash” kullanımını minimumda tutmak veya “Auto” modda çalışmasını sağlamak, donma olasılığını düşürür.
Bu sorunu önlemek için, dosya sistemini izlemek ve “Storage Available”’ı kontrol etmek gerekir. Örneğin, “StorageManager” API’si ile cihazın boş alanını kontrol edebilir ve kullanıcıya “Storage Space”’ı artırma önerisi sunabilirsiniz. Aynı zamanda, “Cache” dosyalarını düzenli olarak temizlemek, geçici dosyaların yer kaplamasını engeller.
Dosya işlemlerinde, “AsyncTask” veya “Coroutines” gibi asenkron yöntemler kullanmak, UI thread’ini serbest bırakır. Örneğin, bir fotoğraf kaydı tamamlandığında, “onPostExecute” içinde “Bitmap”’i dosyaya yazarken, bu işlem sırasında UI thread’i bloklanmaz. Aynı zamanda, “FileChannel” veya “NIO” API’leri, dosya yazma süresini kısaltır ve donma riskini azaltır.
Bu durumu önlemek için, “HandlerThread”, “ExecutorService” veya “Coroutines” kullanarak uzun işlemleri arka planda yürütmek gerekir. Ayrıca, “LiveData” veya “StateFlow” gibi reaktif veri akışı sistemleri, UI thread’ine veri gönderirken asenkron olarak çalışır. Bir diğer önemli nokta, “Toast” veya “Snackbar” gibi mesajların UI thread’ini bloklamamasını sağlamaktır. Örneğin, “Snackbar”’ı bir “CoroutineScope” içinde göstererek, UI thread’inin serbest kalmasını sağlayabilirsiniz.
Kullanıcı deneyimini artırmak için, “ProgressBar” veya “Loading Spinner”’leri, gerçek zamanlı olarak güncellenen UI bileşenleriyle entegre etmek gerekir. Böylece, kullanıcı donma hissi yaşamaz ve uygulama sorunsuz çalışır. Ayrıca, “Gesture” tanıma işlemlerinin de asenkron olarak yapılması, UI thread’inin serbest kalmasını sağlar.
2. Çerçeve Hızını Dinamik Ayarlayın – Kullanıcı cihazının CPU/GPU durumuna göre “Frame Rate”’i düşürün; 60 fps yerine 30 fps’e geçmek ciddi donma riskini azaltır.
3. Çözünürlük Değişkenliği – 4K yerine 1080p kullanarak GPU bellek kullanımını azaltın; çözünürlük seçimi cihazın desteklediği maksimum değere göre yapılmalı.
4. RenderScript ve NDK Kullanımı – Kritik görüntü işleme adımlarını native kodda çalıştırarak CPU yükünü azaltın.
5. API Uyumluluğunu Kontrol Edin – “CameraX” veya “Camera2” API’lerinin cihazda desteklendiğinden emin olun; fallback mekanizmaları kurun.
6. Güç Yönetimi İzleme – Battery Saver veya yüksek sıcaklık durumlarında otomatik olarak “Low Power Mode”’ı etkinleştirin.
7. Depolama Alanı Kontrolü – Dosya kaydetmeden önce “StorageManager” ile boş alanı kontrol edin; kullanıcıyı eksik alan konusunda bilgilendirin.
8. Arka Plan Çalışan İşlemleri İzole Edin – “HandlerThread” veya “ExecutorService” ile uzun süren işlemleri UI thread’inden ayırın.
9. Flash ve LED Kullanımını Optimize Edin – LED’i sürekli açık tutmaktan kaçının; “Auto” modda çalıştırın.
10. Kullanıcı Geri Bildirimi – Donma yaşandığında kullanıcıya “Processing” göstergesi sunarak, uygulamanın yanıt verdiğini hissettirin.
Kamera donmalarının temel sebepleri sıklıkla bellek yönetimi, CPU ve GPU yükleri, yazılım uyumsuzlukları ve çevresel faktörlerden kaynaklanır. Ancak her durum benzersizdir; bir cihazda çalışan bir optimizasyon, başka bir cihazda sorun yaratabilir. Bu nedenle, donma sorununu çözmek için hem sistematik bir analiz hem de esnek bir çözüm yaklaşımı gerekir. Aşağıdaki makalede, kamera uygulamasının donma sorununu derinlemesine inceleyecek, temel kavramları tanımlayacak, tarihsel gelişimi ve güncel durumu ele alacak, uzman görüşlerini paylaşıp pratik uygulamalarla gerçek hayat örnekleri sunacağız. Ayrıca sık yapılan hataları ve dikkat edilmesi gereken noktaları vurgulayarak, okuyuculara kapsamlı bir rehber sunacağız.
Temel Kavramlar ve Tanım
Kamera uygulamasının donması, cihazın görüntü alma ve işleme sürecinde aniden yanıt vermemesine verilen genel adımdır. Donma, genellikle uygulamanın ana iş parçacığının (UI thread) bloke olması veya arka planda çalışan işlemlerin aşırı kaynak tüketmesi sonucu ortaya çıkar. Bu durum, bellek sızıntıları, CPU ve GPU aşırı kullanımı, düşük bellek (RAM) ve depolama alanı, yanı sıra sıcaklık ve güç yönetim sorunları ile yakından ilişkilidir. Donma, hem kullanıcı deneyimini olumsuz etkiler hem de cihazın batarya ömrü ve genel performansını düşürür.Bir kamera uygulamasında donma süreci, genelde üç aşamada gerçekleşir: önceden alınan görüntü akışının işlenmesi sırasında bellek tıkanıklığı, CPU/GPU yoğunluklu filtrelerin uygulanması sırasında sürecin bloklanması ve sistem kaynaklarının yetersizliği. Bu süreç, özellikle gerçek zamanlı filtreler, yüz tanıma, AR (Artırılmış Gerçeklik) efektleri gibi yüksek kaynak gerektiren işlemlerle birleştiğinde, donma olasılığı artar. Donmanın nedeni olarak, yazılım hataları, uyumsuz API sürümleri, donanım sınırlamaları ve çevresel faktörler sıklıkla gösterilir.
Kamera uygulamasının donmasını önlemek için, geliştiricilerin öncelikle sistem kaynaklarını izlemeleri ve yönetmeleri gerekir. Bu, gerçek zamanlı görüntü işleme sırasında bellek tüketimini kontrol etmek, CPU ve GPU kullanımını dengeli tutmak ve arka plan işlemlerini optimize etmek anlamına gelir. Aynı zamanda cihazın donanım sınırlarını anlamak ve yazılımın bu sınırlar içinde çalışmasını sağlamak, donma riskini minimuma indirir.
Kamera Donmalarının Yaygın Sebepleri
Kamera donmalarının en sık karşılaşılan sebepleri, kaynak yönetimi sorunları ve yazılım uyumsuzluklarıdır. Bu bölümde, donma riskini artıran başlıca faktörleri ele alacağız.Bellek Yönetimi ve Sızıntıları
Bellek sızıntıları, kamera uygulamasının en kritik sorunlarından biridir. Özellikle, görüntü akışının her kare için yeni bir bitmap nesnesi oluşturulması ve bu nesnelerin zamanında serbest bırakılmaması durumunda, RAM tüketimi hızla artar. Örneğin, 1080p çözünürlükte 30 fps çekim yapıldığında, her kare yaklaşık 2 MB bellek tüketebilir. 30 karede toplam 60 MB'lık bir bellek havuzu hızla tükenebilir. Bu durumda, işletim sistemi yeni nesneler için yer ayırmakta zorlanır ve uygulama donar.Bellek sızıntılarını tespit etmek için Android Studio Profiler veya Xcode Instruments gibi araçlar kullanılabilir. Profiling sırasında, “Java Heap” veya “Allocations” sekmesinde artan bellek kullanımını izlemek, sızıntıların nereden kaynaklandığını gösterir. Ek olarak, “Bitmap” nesnelerinin “recycle()” metodunu çağırmak, bellek havuzundaki boş alanı geri kazanmak için kritik öneme sahiptir. Ancak, “recycle()” çağrısının yalnızca kullanılmayan bitmap'lerde yapılması gerekir; aksi halde “Canvas” veya “ImageView” gibi nesneler hatalı görüntü gösterebilir.
Bir diğer yaygın hatalı uygulama, “WeakReference” yerine “SoftReference” kullanarak bitmap nesnelerini tutmaktır. “SoftReference”, bellek yetersizliği durumunda otomatik olarak temizlenir, ancak kullanım süresi kadim nesnelerin hâlâ bellek üzerinde kalmasına neden olabilir. Bu yüzden, uygulama içinde “BitmapFactory.Options.inMutable” kullanarak değiştirilebilir bitmap'ler oluşturmak, bellek yönetimini kolaylaştırır.
CPU ve GPU Yükleri
CPU ve GPU, kamera uygulamasının gerçek zamanlı görüntü işleme sürecinde ana oyunculardır. Çok sayıda filtre veya efekt uygulanırken, CPU çekirdekleri yoğun bir şekilde meşgul olur ve GPU belleği üzerindeki yük de artar. Örneğin, bir AR uygulamasında 3D nesnelerin gerçek zamanlı olarak render edilmesi, GPU üzerinden yüksek işlem gücü gerektirir. Bu durumda, GPU belleği dolduğunda, işlemci yeni frame'leri işlemek için beklemek zorunda kalır ve donma meydana gelir.CPU yükünü azaltmak için, görüntü işleme algoritmalarını mümkün olduğunca hafif tutmak gerekir. Örneğin, “Gaussian Blur” yerine “Box Blur” gibi daha az kaynak tüketen filtreler tercih edilebilir. Ayrıca, “RenderScript” veya “NDK” ile native kod kullanarak, CPU üzerindeki iş yükünü azaltmak mümkündür. GPU tarafında, “OpenGL ES” veya “Metal” gibi düşük seviyeli API'lar, donanımın tam potansiyelini kullanarak yüksek performans sağlar. Ancak, GPU kullanımını izlemek için “GPU Profiler” araçları kullanmalı ve “Shader” optimizasyonları yapmalısınız.
Bir örnek olarak, 4K çözünürlükte video kaydı sırasında, GPU bellek sınırının aşılması sık sık donmaya yol açar. Bu durumda, video çözünürlüğünü 1080p'ye düşürmek veya “Frame Rate”'i 30 fps'e düşürmek, GPU üzerindeki baskıyı azaltır ve donma riskini düşürür.
API Uyum ve Yazılım Hataları
Kamera API'leri, işletim sisteminin sürümleri arasında farklılık gösterebilir. Android 10 ve 11 arasında, CameraX API'si yeni özellikler eklemiş olsa da, bazı cihaz üreticileri bu API'ları tam olarak desteklemeyebilir. Bu uyumsuzluk, kamera donmalarına neden olabilir. Örneğin, “Camera2 API” üzerinden “Preview Session” oluştururken, “CaptureRequest” parametreleri cihazın desteklemediği bir çözünürlük seçildiyse, uygulama donabilir.Yazılım hataları da donma riskini artırır. Örneğin, “SurfaceTexture” üzerinde çok sayıda “ImageReader” nesnesi açmak, kaynak tüketimini artırır. Bu tip hataları önlemek için, API çağrılarını “try-catch” bloğu içinde tutmak ve hatalı durumlarda “onError” callback'lerini kullanmak gerekir. Ayrıca, “CameraX” gibi üst seviyeli API'lar, donanım uyumluluğunu otomatik olarak yönetir, fakat yine de “Device Compatibility List” (DCL) üzerinden uyumluluk kontrolü yapılmalıdır.
Bir diğer önemli nokta, “Fragment” veya “Activity” yaşam döngüsünde kamera kaynaklarını doğru şekilde açmak ve kapatmaktır. Örneğin, “onPause” veya “onStop” içinde kamera oturumunu sonlandırmak, kaynak sızıntılarını engeller. Aksi takdirde, kameranın “Preview” akışı devam ederken uygulama kapatıldığında donma oluşabilir.
Cihaz Sıcaklığı ve Güç Yönetimi
Kamera uygulamaları, yüksek işlem gücü gerektirdiği için cihazın sıcaklık seviyesini hızla artırır. Çoğu modern akıllı telefon, belirli bir sıcaklık eşiğine ulaştığında CPU ve GPU'yu otomatik olarak yavaşlatır. Bu durum, donanımın korunması amacıyla yapılır, ancak uygulama yanıt vermeyi durdurabilir.Örneğin, 60 fps’lik bir video kaydı sırasında, cihazın sıcaklığı 85°C seviyesine ulaşabilir. Bu noktada, işletim sistemi CPU frekansını düşürür ve GPU önceliklerini yeniden ayarlar. Kısa süreli bir donma yaşanabilir. Bu sorunu önlemek için, “Frame Rate”’i azaltmak, “Resolution”’ı düşürmek ve “Hardware Acceleration”’ı optimize etmek gerekir. Ayrıca, “Battery Saver” modu etkinleştirildiğinde, cihazın performansı düşürülür; bu da donma riskini artırır. Öyleyse, uygulama içinde “Battery Level”’ı izlemek ve gerekirse düşük güç modunda çalışmayı izole etmek önemlidir.
Bir başka önemli faktör, “Camera Flash” veya “LED” kullanımının sıklığıdır. Sürekli LED’lerin yanması, cihazın ısı dağılımını bozar ve donma riskini artırır. Bu durumda, “Flash” kullanımını minimumda tutmak veya “Auto” modda çalışmasını sağlamak, donma olasılığını düşürür.
Depolama Alanı ve Dosya İşlemleri
Kamera uygulamaları, yüksek çözünürlüklü fotoğraf ve video dosyaları oluşturur. Bu dosyaların depolanması, cihazın dahili hafızasında yeterli alanın bulunmaması durumunda donmaya yol açabilir. Özellikle, 4K video kaydederken, 1 GB’lık bir dosya oluşturmak yaygındır. Depolama alanı doluysa, yeni dosya oluşturulurken “File Not Found” veya “Disk Full” hataları alınır ve uygulama yanıt vermeyi durdurur.Bu sorunu önlemek için, dosya sistemini izlemek ve “Storage Available”’ı kontrol etmek gerekir. Örneğin, “StorageManager” API’si ile cihazın boş alanını kontrol edebilir ve kullanıcıya “Storage Space”’ı artırma önerisi sunabilirsiniz. Aynı zamanda, “Cache” dosyalarını düzenli olarak temizlemek, geçici dosyaların yer kaplamasını engeller.
Dosya işlemlerinde, “AsyncTask” veya “Coroutines” gibi asenkron yöntemler kullanmak, UI thread’ini serbest bırakır. Örneğin, bir fotoğraf kaydı tamamlandığında, “onPostExecute” içinde “Bitmap”’i dosyaya yazarken, bu işlem sırasında UI thread’i bloklanmaz. Aynı zamanda, “FileChannel” veya “NIO” API’leri, dosya yazma süresini kısaltır ve donma riskini azaltır.
Kullanıcı Etkileşimi ve Öncelik Sıralaması
Kullanıcı arayüzü (UI), kamera uygulamasının en kritik bileşenlerinden biridir. UI thread’inin, kamera önizlemesi ve diğer zaman kritik işlemlerle dolu olması, donmaya neden olabilir. Örneğin, “Button” tıklamalarını işleyen “OnClickListener”’lar, UI thread’inde çalışır. Eğer bu listener içinde uzun süren bir işlem yapılırsa, UI thread’i bloke olur ve uygulama donar.Bu durumu önlemek için, “HandlerThread”, “ExecutorService” veya “Coroutines” kullanarak uzun işlemleri arka planda yürütmek gerekir. Ayrıca, “LiveData” veya “StateFlow” gibi reaktif veri akışı sistemleri, UI thread’ine veri gönderirken asenkron olarak çalışır. Bir diğer önemli nokta, “Toast” veya “Snackbar” gibi mesajların UI thread’ini bloklamamasını sağlamaktır. Örneğin, “Snackbar”’ı bir “CoroutineScope” içinde göstererek, UI thread’inin serbest kalmasını sağlayabilirsiniz.
Kullanıcı deneyimini artırmak için, “ProgressBar” veya “Loading Spinner”’leri, gerçek zamanlı olarak güncellenen UI bileşenleriyle entegre etmek gerekir. Böylece, kullanıcı donma hissi yaşamaz ve uygulama sorunsuz çalışır. Ayrıca, “Gesture” tanıma işlemlerinin de asenkron olarak yapılması, UI thread’inin serbest kalmasını sağlar.
Uzman Önerileri ve İpuçları
1. Bellek Sızıntılarından Kaçının – Bitmap’leri “recycle()” metodu ile serbest bırakın, “WeakReference” kullanın ve bellek profillerini düzenli olarak kontrol edin.2. Çerçeve Hızını Dinamik Ayarlayın – Kullanıcı cihazının CPU/GPU durumuna göre “Frame Rate”’i düşürün; 60 fps yerine 30 fps’e geçmek ciddi donma riskini azaltır.
3. Çözünürlük Değişkenliği – 4K yerine 1080p kullanarak GPU bellek kullanımını azaltın; çözünürlük seçimi cihazın desteklediği maksimum değere göre yapılmalı.
4. RenderScript ve NDK Kullanımı – Kritik görüntü işleme adımlarını native kodda çalıştırarak CPU yükünü azaltın.
5. API Uyumluluğunu Kontrol Edin – “CameraX” veya “Camera2” API’lerinin cihazda desteklendiğinden emin olun; fallback mekanizmaları kurun.
6. Güç Yönetimi İzleme – Battery Saver veya yüksek sıcaklık durumlarında otomatik olarak “Low Power Mode”’ı etkinleştirin.
7. Depolama Alanı Kontrolü – Dosya kaydetmeden önce “StorageManager” ile boş alanı kontrol edin; kullanıcıyı eksik alan konusunda bilgilendirin.
8. Arka Plan Çalışan İşlemleri İzole Edin – “HandlerThread” veya “ExecutorService” ile uzun süren işlemleri UI thread’inden ayırın.
9. Flash ve LED Kullanımını Optimize Edin – LED’i sürekli açık tutmaktan kaçının; “Auto” modda çalıştırın.
10. Kullanıcı Geri Bildirimi – Donma yaşandığında kullanıcıya “Processing” göstergesi sunarak, uygulamanın yanıt verdiğini hissettirin.