Android 16 platformunda, uygulamanızı etkileyebilecek davranış değişiklikleri vardır. Aşağıdaki davranış değişiklikleri, targetSdkVersion
'ten bağımsız olarak Android 16'da çalıştırılan tüm uygulamalar için geçerlidir. Uygulamanızı test etmeniz ve ardından geçerli olduğu durumlarda bu değişiklikleri desteklemek için gerektiği gibi değiştirmeniz gerekir.
Yalnızca Android 16'yı hedefleyen uygulamaları etkileyen davranış değişiklikleri listesini de inceleyin.
Temel işlevler
Android 16, Android sisteminin çeşitli temel özelliklerini değiştiren veya genişleten aşağıdaki değişiklikleri içerir.
JobScheduler kota optimizasyonları
Android 16'dan itibaren, normal ve hızlandırılmış iş yürütme çalışma süresi kotasını aşağıdaki faktörlere göre ayarlıyoruz:
- Uygulamanın bulunduğu uygulama bekleme havuzu: Android 16'da, etkin bekleme havuzları geniş bir çalışma süresi kotasıyla uygulanmaya başlayacaktır.
- İş, uygulama üst durumdayken çalışmaya başlarsa: Android 16'da, uygulama kullanıcı tarafından görünür durumdayken başlatılan ve uygulama görünmez hale geldikten sonra devam eden işler, iş çalışma süresi kotasına uyar.
- İş, bir ön plan hizmeti çalışırken yürütülüyorsa: Android 16'da, bir ön plan hizmetiyle eşzamanlı olarak yürütülen işler iş çalışma süresi kotasına uyar. Kullanıcı tarafından başlatılan veri aktarımı için işlerden yararlanıyorsanız bunun yerine kullanıcı tarafından başlatılan veri aktarım işlerini kullanmayı düşünebilirsiniz.
Bu değişiklik, WorkManager, JobScheduler ve DownloadManager kullanılarak planlanan görevleri etkiler. Bir işin neden durdurulduğunu hata ayıklamak için WorkInfo.getStopReason()
'u çağırarak işinizin neden durdurulduğunu kaydetmenizi öneririz (JobScheduler işleri için JobParameters.getStopReason()
'i çağırın).
Pil kullanımı için en iyi uygulamalar hakkında daha fazla bilgi edinmek isterseniz görev planlama API'leri için pil kullanımını optimize etme konulu makaleyi inceleyin.
Ayrıca, bir işin neden yürütülmediğini anlamak için Android 16'da kullanıma sunulan yeni JobScheduler#getPendingJobReasonsHistory
API'den yararlanmanızı öneririz.
Test
Uygulamanızın davranışını test etmek için uygulama Android 16 cihazda çalışıyorsa belirli iş kotası optimizasyonlarının geçersiz kılınmasını etkinleştirebilirsiniz.
"Üst durum, iş çalışma zamanı kotasına uyar" yaptırımını devre dışı bırakmak için aşağıdaki adb
komutunu çalıştırın:
adb shell am compat enable OVERRIDE_QUOTA_ENFORCEMENT_TO_TOP_STARTED_JOBS APP_PACKAGE_NAME
"Ön plan hizmetiyle eşzamanlı olarak yürütülen işler, iş çalışma süresi kotasına uymalıdır" kuralının uygulanmasını devre dışı bırakmak için aşağıdaki adb
komutunu çalıştırın:
adb shell am compat enable OVERRIDE_QUOTA_ENFORCEMENT_TO_FGS_JOBS APP_PACKAGE_NAME
Belirli uygulama bekleme grubu davranışlarını test etmek için aşağıdaki adb
komutunu kullanarak uygulamanızın uygulama bekleme grubunu ayarlayabilirsiniz:
adb shell am set-standby-bucket APP_PACKAGE_NAME active|working_set|frequent|rare|restricted
Uygulamanızın bulunduğu uygulama bekleme grubunu anlamak için aşağıdaki adb
komutunu kullanarak uygulamanızın uygulama bekleme grubunu alabilirsiniz:
adb shell am get-standby-bucket APP_PACKAGE_NAME
JobInfo#setImportantWhileForeground desteğinin tamamen sonlandırılması
JobInfo.Builder#setImportantWhileForeground(boolean)
yöntemi, planlama uygulaması ön plandayken veya geçici olarak arka plan kısıtlamalarından muafken bir işin önemini belirtir.
Bu yöntem, Android 12 (API düzeyi 31) sürümünden itibaren kullanımdan kaldırılmıştır. Android 16'dan itibaren bu yöntem artık etkili bir şekilde çalışmaz ve bu yöntem çağrılırsa yoksayılır.
Bu işlev kaldırma işlemi JobInfo#isImportantWhileForeground()
için de geçerlidir. Android 16'dan itibaren, yöntem çağrılırsa false
döndürülür.
Kullanıcı deneyimi ve sistem kullanıcı arayüzü
Android 16, daha tutarlı ve sezgisel bir kullanıcı deneyimi sunmak için tasarlanmış aşağıdaki değişiklikleri içerir.
Kullanımı engelleyen erişilebilirlik duyurularının kullanımdan kaldırılması
Android 16, announceForAccessibility
kullanımı veya TYPE_ANNOUNCEMENT
erişilebilirlik etkinliklerinin gönderilmesiyle karakterize edilen erişilebilirlik duyurularını desteklememektedir. Bu durum, TalkBack ve Android'in ekran okuyucusunun kullanıcıları için tutarsız kullanıcı deneyimleri oluşturabilir. Alternatifler ise Android'in çeşitli yardımcı teknolojileri genelinde daha geniş bir kullanıcı ihtiyacı yelpazesine daha iyi hizmet eder.
Alternatiflere örnekler:
- Pencere değişiklikleri gibi önemli kullanıcı arayüzü değişiklikleri için
Activity.setTitle(CharSequence)
vesetAccessibilityPaneTitle(java.lang.CharSequence)
değerlerini kullanın. Oluştur'daModifier.semantics { paneTitle = "paneTitle" }
simgesini kullanarak - Kullanıcıyı kritik kullanıcı arayüzündeki değişiklikler hakkında bilgilendirmek için
setAccessibilityLiveRegion(int)
simgesini kullanın. Oluştur'daModifier.semantics { liveRegion = LiveRegionMode.[Polite|Assertive]}
simgesini kullanın . Bu bildirimler, bir görünüm her güncellendiğinde bildirim oluşturabileceğinden, dikkatli bir şekilde kullanılmalıdır. - Kullanıcıları hatalar hakkında bilgilendirmek için
AccessibilityEvent#CONTENT_CHANGE_TYPE_ERROR
türündeki birAccessibilityEvent
gönderin veAccessibilityNodeInfo#setError(CharSequence)
değerini ayarlayın veyaTextView#setError(CharSequence)
kullanın.
Kullanımdan kaldırılan announceForAccessibility
API'nin referans dokümanlarında, önerilen alternatifler hakkında daha fazla bilgi verilmektedir.