Davranış değişiklikleri: tüm uygulamalar

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:

Kullanımdan kaldırılan announceForAccessibility API'nin referans dokümanlarında, önerilen alternatifler hakkında daha fazla bilgi verilmektedir.