Android Uygulama Erişimlerini ve Arka Plan Görevlerini Nasıl Kontrol Eder?
Android, runtime-permissions modelini ve ayrı "special" izinleri kullanır; arka plan kısıtlamaları ise Doze, App Standby ve Background Execution Limits ile ekran dışındaki görevlerin yürütülmesini sınırlar. Uygulamanın düzgün çalışması için: yalnızca gerekli izinleri isteyin, kullanıcı için gerekçeyi açıklayın, arka plan çalışmaları için Foreground Service veya WorkManager kullanın ve izinlerin otomatik iptali ile pil optimizasyonlarını dikkate alın.
Android'de İzinler Nasıl Çalışır?
- Runtime permissions: Android 6+ ile tehlikeli izinler (konum, kamera, kişiler vb.) uygulama çalışırken istenir; kullanıcı reddedebilir veya kalıcı olarak verebilir.
- İzin grupları: Bir gruptaki tek bir izin, aynı gruptaki diğerlerine de erişim açar (ancak davranış sürümlere göre değişir).
- Special permissions: MANAGE_EXTERNAL_STORAGE, SYSTEM_ALERT_WINDOW, MODIFY_PHONE_STATE vb. sistem ayarlarına açıkça geçiş gerektirir.
- Auto-revoke: Uygulama uzun süre kullanılmazsa, sistem daha önce verilen izinleri otomatik olarak geri alabilir.
- Scoped Storage: Dosya erişimi sınırlıdır; genel erişim için MediaStore veya SAF (Storage Access Framework) kullanın.
Pratikte: İşlem öncesinde her zaman ContextCompat.checkSelfPermission kontrolünü yapın, rationale (açıklama) gösterin ve kullanıcının reddetmesini doğru şekilde yönetin.
İzin isteme mantığını farklı Android sürümlerinde kontrol edin ve güncelleyin: İzinlerin ve special-permissions'ların davranışı Android 8–13 arasında değişmiştir.
Arka Plan Çalışma Kısıtlamaları: Neler Etkiler ve Doğru Şekilde Nasıl Aşılır?
- Doze ve App Standby (cihaz boşta kaldığında etkinleşir) arka plan görevlerini ve senkronizasyonları duraklatır.
- Background Execution Limits (Android 8+) foreground service olmadan uzun süreli arka plan çalışmasını yasaklar.
- Arka plan konum kısıtlamaları: Android 10–11 itibarıyla arka plan konumu ayrı izin ve gerekçe gerektirir.
- OEM pil optimizasyonları (Xiaomi, Huawei vb.) arka plan işlemlerini ek olarak sonlandırabilir.
Geliştiricilere öneriler:
- Ertelenebilen görevler için WorkManager kullanın — sistem kısıtlamalarını dikkate alır ve görevleri doğru şekilde yeniden başlatır.
- Uzun süreli arka plan aktivitesi için zorunlu bildirimle birlikte Foreground Service kullanın.
- background-location iznini ayrı olarak isteyin ve arka planda neden konuma ihtiyaç duyulduğunu açıkça açıklayın.
- Aynı anda çok sayıda izin istemeyin — izin isteklerini kullanım durumlarına göre dağıtın.
Pil optimizasyonlarını zorla devre dışı bırakmak kullanıcı deneyimini kötüleştirir. Talimat sunun ve bunu yalnızca gerçekten gerekli olduğunda önerin.
Yöneticiler ve Kullanıcılar İçin Pratik Adımlar
- Uygulama izinlerini kontrol etme: Ayarlar → Uygulamalar → İzinler. Gereksiz erişimleri iptal edin.
- Arka plan çalışmasını yönetme: Pil Ayarları → Arka plan aktivitesini kısıtlama veya "Pil Optimizasyonu".
- Geliştiriciler için: Manifest dosyasında yalnızca gerekli permissions'ları beyan edin; requestPermissionFlow kullanın, onRequestPermissionsResult'i yönetin; dosyalar için WorkManager/ForegroundService ve SAF/MediaStore uygulayın.
- Farklı Android sürümlerinde ve özel optimizasyonlara sahip cihazlarda test edin.
Sık Yapılan Hatalar
- Kurulum sırasında tüm izinleri aynı anda istemek — güveni azaltır ve reddetme sayısını artırır.
- Uzun süreli arka plan çalışması için foreground service'i göz ardı etmek — görevler basitçe durdurulur.
- scoped storage ile traditional external storage'ı karıştırmak — dosya erişimi çalışmayabilir.
- auto-revoke'u dikkate almamak — uygulama uzun süreli boşta kalmanın ardından "aniden" erişimi kaybeder.
SSS
- Uygulamanın arka planda neden çalışmadığını nasıl anlarım? Logları, pil optimizasyonu politikalarını ve foreground service/WorkManager varlığını kontrol edin.
- MANAGE_EXTERNAL_STORAGE istemeli miyim? Yalnızca uygulama gerçekten dosya sistemine küresel erişim gerektiriyorsa; SAF veya MediaStore tercih edilmelidir.
- Arka plan konumu nasıl doğru şekilde istenir? Önce foreground-location isteyin ve faydasını açıklayın, ardından kullanıcıya açık bir açıklama ile ayrı olarak background-location isteyin.
- auto-revoke nasıl önlenir? Uygulamada düzenli kullanıcı aktivitesini sürdürün veya uzun süreli boşta kalmanın hakların iptaline yol açacağını bilgilendirin.
Özet: Android'in izin modeli ve arka plan kısıtlamalarını anlamak, işlevselliği güvenli ve öngörülebilir şekilde uygulamaya olanak tanır — bunun için anahtar mekanizmalar şunlardır: minimum izin seti, WorkManager/Foreground Service, scoped storage ile doğru çalışma ve kullanıcıyla şeffaf iletişim.