Android 8.0 (API düzeyi 26), kullanıcılar ve geliştiriciler için çeşitli yeni özellikler ve yetenekler sunar. Bu dokümanda, geliştiriciler için sunulan yenilikler vurgulanmaktadır.
Şuna da göz atmayı unutmayın: Android 8.0 Davranış Değişiklikleri, platformun değiştiği alanlar hakkında bilgi edinin uygulamalarınızı etkileyebilir.
Kullanıcı Deneyimi
Pencere içinde pencere modu
Android 8.0'da pencere içinde pencere.
Android 8.0 (API düzeyi 26), etkinliklerin pencere içinde pencere (PIP) moduna gidin. PIP, çoğunlukla video oynatma için kullanılan özel bir çok pencere modu türüdür. PIP modu ilk olarak Yalnızca Android TV; Android 8.0, bu özelliği kullanıma sunar Android cihazlarda kullanabilirsiniz.
PIP modunda olan bir etkinlik duraklatılmış durumda olur, ancak
içeriği göstermeye devam eder. Bu nedenle, uygulamanızın onPause()
işleyicisinde oynatmayı duraklatmadığından emin olmanız gerekir. Bunun yerine, videoyu onStop()
içinde duraklatmalı ve onStart()
içinde oynatmaya devam etmelisiniz. Daha fazla bilgi için bkz.
Çoklu Pencere
Yaşam döngüsü.
Etkinliğinizin PIP modunu kullanabileceğini belirtmek için manifest dosyasında android:supportsPictureInPicture
değerini true olarak ayarlayın.
(Android 8.0'dan itibaren PIP için android:resizeableActivity
manifest özelliği gerekli değildir.
Ancak şunu ayarlamanız gerekir:
Etkinliğiniz diğer etkinlikleri destekliyorsa android:resizeableActivity
değerini "true" olarak ayarlayın
çoklu pencere modlarında çalışır.)
Android 8.0 (API düzeyi 26), PIP modundayken bir etkinliğin nasıl davranması gerektiğini belirtmek için PIP yöntemlerine ilettiğiniz yeni bir nesne olan PictureInPictureParams
'ü kullanıma sunar. Bu nesne
etkinliğin tercih edilen en boy oranı.
Şu bölümde açıklanan mevcut PIP yöntemleri: Ekleme Pencere içinde pencere özelliği artık Yalnızca Android TV'de değil, tüm Android cihazlarda kullanılır. Ayrıca, Android 8.0, Android 8.0'ın PIP modu:
Activity.enterPictureInPictureMode(PictureInPictureParams args)
: Etkinliği pencere içinde pencere moduna yerleştirir. Etkinliğin en boy oranı ve diğer yapılandırma ayarları args tarafından belirtilir. args içindeki herhangi bir alan boşsa sistem,Activity.setPictureInPictureParams()
'ı son kez çağırdığınızda ayarlanan değerleri kullanır.Belirtilen etkinlik ekranın bir köşesine yerleştirilir; geri kalan Ekran, ekrandaki önceki etkinlikle doldurulur. PIP moduna giren etkinlik duraklatılmış duruma geçer ancak çalışmaya devam eder. Kullanıcı PIP etkinliğine dokunursa sistem, etkileşim kurulacak kullanıcı; Dokunmatik etkinlikler, aktiviteye devam ederken PIP durumunda olduğundan emin olun.
-
Activity.setPictureInPictureParams()
: Bir etkinliğin PIP yapılandırma ayarlarını günceller. Etkinlik ayarlar güncellendi; Bu, aşağıdaki durumlarda en boy oranı değişiklikleri gösterir. Etkinlik PIP modunda değilse bu yapılandırma ayarları,enterPictureInPictureMode()
yöntemini çağırın.
Bildirimler
Android 8.0'da (API seviyesi 26), bildirim davranışını ve ayarlarını yönetmenin daha kolay ve tutarlı bir yolunu sunmak için bildirimleri yeniden tasarladık. Söz konusu değişiklikler şunlardır:
- Bildirim kanalları: Android 8.0 kullanıma sunuldu kullanıcı tarafından özelleştirilebilir kanal oluşturmanıza olanak tanıyan bildirim kanalları tıklayın. Kullanıcı arayüzünde bildirim kanalları bildirim kategorileri olarak adlandırılır. Nasıl yapıldığını bildirim kanallarını uygulamak için Yöneticilik yapmak bildirim kanallarına dikkat edin.
- Bildirim noktaları: Android 8.0, uygulama başlatıcı simgelerinde nokta veya rozet gösterme desteğini kullanıma sunar. Bildirim noktaları, Kullanıcının henüz kapatmadığı veya işlem yapmadığı bildirimlerin varlığı. Bildirim noktalarıyla nasıl çalışacağınızı öğrenmek için Bildirim rozetleri konusuna bakın.
- Erteleme: Kullanıcılar bildirimleri erteleyebilir. Bu durumda bildirimler bir süreliğine kaybolur ve daha sonra tekrar gösterilir. Bildirimler şu şekilde yeniden görünür: ortaya çıktığında aynı önem düzeyine sahip olmaları gerekir. Uygulamalar kaldırabilir veya güncelleyebilir ancak ertelenen bir bildirimin güncellenmesi, tekrar karşınıza çıkacak.
- Bildirim zaman aşımları:
şunu kullanarak bildirim gönder:
setTimeoutAfter()
Bildirimin ne kadar süre sonra gösterileceğini belirtmek için bu yöntemi kullanabilirsiniz. iptal edilmelidir. Gerekirse belirtilen zaman aşımı süresi geçer. - Bildirim ayarları:
Notification.INTENT_CATEGORY_NOTIFICATION_PREFERENCES
intent'ini kullanarak bir bildirimde uygulamanızın bildirim ayarlarına bağlantı oluşturduğunuzda görünen metni ayarlamak içinsetSettingsText()
işlevini çağırabilirsiniz. Sistem, filtre uygulama amacıyla aşağıdaki ekstraları sağlayabilir uygulamanızın kullanıcılara göstermesi gereken ayarlar:EXTRA_CHANNEL_ID
,NOTIFICATION_TAG
veNOTIFICATION_ID
. - Bildirim kapatma: Kullanıcılar bildirimleri kendileri kapatabilir ve uygulamalar bildirimleri programatik olarak kaldırabilir. Bir bildirimin ne zaman gösterileceğini belirleyebilirsiniz
ve
onNotificationRemoved()
yöntemini kullanarakNotificationListenerService
sınıf. - Arka plan renkleri: Bir arka plan rengi belirleyip
bildirimi görürsünüz. Bu özelliği bildirimlerde yalnızca
kullanıcının bir bakışta görmesi için kritik önemde olan,
devam eden görevlerdir. Örneğin,
Örneğin, aşağıdaki ürünlerle ilgili bildirimler için bir arka plan rengi
veya devam eden bir telefon aramasıyla
karşılaşabilirsiniz.
setColor()
simgesini kullanarak da dilediğiniz arka plan rengini ayarlayabilirsiniz. İşlem devam ediyor bir bildirim için arka plan rengi kullanımını etkinleştirmek üzeresetColorized()
kullanmanızı sağlar. - Mesajlaşma stili: Android 8.0'da
MessagingStyle
sınıfını kullanan bildirimler, daraltılmış biçimlerinde daha fazla içerik gösterir. Bunun için Şu ders içinMessagingStyle
sınıf mevcut: Mesajlaşmaya yönelik bildirimler de dahil olmak üzere. Mesajlaşmayla ilgili bildirimlere geçmiş mesajlar ekleyerek bir görüşmeye bağlam sağlamak içinaddHistoricMessage()
yöntemini de kullanabilirsiniz.

Kullanıcılar görüntülemek için uygulama başlatıcı simgelerine uzun basabilir en iyi uygulamaları paylaşacağız.
Otomatik doldurma çerçevesi
Hesap oluşturma, giriş yapma ve kredi kartı işlemleri zaman alır ve hatalara açıktır. Kullanıcılar, bu tür tekrarlı görevleri gerektiren uygulamalardan kolayca sıkılabiliyor.
Android 8.0 (API düzeyi 26) giriş yapma gibi formların doldurulmasını sağlar kullanıma sunduk. Kullanıcı şu ayarı etkinleştirdikten sonra mevcut ve yeni uygulamalar Otomatik Doldurma Çerçevesi ile çalışır: Otomatik doldurma'yı tıklayın.
Uygulamanızın çerçeveyle çalışma şeklini optimize etmek için bazı adımlar uygulayabilirsiniz. Daha fazla bilgi için Otomatik Doldurma Çerçevesine Genel Bakış başlıklı makaleyi inceleyin.
İndirilebilir yazı tipleri
Android 8.0 (API düzeyi 26) ve Android Destek Kitaplığı 26, bir bir sağlayıcı uygulamasına sahip olmanız gerekir. APK indirme yazı tipleri. Bu özellik, APK boyutunuzu küçültür, uygulama yükleme başarı oranını artırır ve birden fazla uygulamanın aynı yazı tipini paylaşmasına olanak tanır.
Yazı tiplerini indirme hakkında daha fazla bilgi için İndirilebilir Yazı Tipleri.
XML'deki yazı tipleri
Android 8.0 (API düzeyi 26), XML'de yazı tiplerini destekleyen yeni bir
yazı tiplerini kaynak olarak kullanmanızı sağlar. Yani, yazı tiplerini tek bir pakette
kullanabilirsiniz. Yazı tipleri R
dosyasında derlenir ve otomatik olarak oluşturulur
sistemde kaynak olarak bulunur. Ardından, yeni bir kaynak türü olan font
ile bu yazı tiplerine erişebilirsiniz.
Destek Kitaplığı 26, API 14 ve sonraki sürümleri çalıştıran cihazlarda bu özelliğe tam destek sağlar.
Yazı tiplerini kaynak olarak kullanma ve sistem yazı tiplerini alma hakkında daha fazla bilgi için XML'de yazı tipleri başlıklı makaleyi inceleyin.
TextView'yi otomatik boyutlandırma
Android 8.0 (API düzeyi 26), metninizin boyutunu TextView'in boyutuna göre otomatik olarak genişletmenize veya daraltmanıza olanak tanır. Bu, çok fazla metin boyutunu farklı ekranlarda veya dinamik içerikle optimize etmeyi daha kolay hale getirir. Android 8.0'da TextView'i otomatik boyutlandırma hakkında daha fazla bilgi için TextView'i otomatik boyutlandırma başlıklı makaleyi inceleyin.
Uyarlanabilir simgeler
Android 8.0 (API düzeyi 26) sürümünde uyarlanabilir başlatıcı simgeleri kullanıma sunulmuştur. Uyarlanabilir simgeler görsel desteği destekler ve farklı cihaz modellerinde çeşitli şekiller gösterebilir. Nasıl yapıldığını öğrenmek için uyarlanabilir simgeler oluşturmak için Uyarlanabilir Simgeler'e bakın rehberini inceleyin.
Renk yönetimi
Görüntüleme uygulamalarının Android geliştiricileri artık yeni cihazlardan yararlanabiliyor Geniş gama sahip renkli bir ekrana sahip. Geniş gamı görüntülemek için görüntüler için, uygulamaların manifest dosyalarında bir işareti etkinleştirmesi gerekir (etkinlik başına) ve bit eşlemleri yerleşik bir geniş renk profiliyle (AdobeRGB, Pro Photo RGB, DCI-P3 vb.) gösterilir.
WebView API'leri
Android 8.0, uygulamanızda web içeriği görüntüleyen WebView
nesnelerini yönetmenize yardımcı olacak çeşitli API'ler sağlar. Uygulamanızın kararlılığını ve güvenliğini artıran bu API'ler şunlardır:
- Version API
- Google SafeBrowsing API
- Termination Handle API
- Renderer Importance API
Bu API'lerin nasıl kullanılacağı hakkında daha fazla bilgi edinmek için WebView'leri yönetme başlıklı makaleyi inceleyin.
WebView
sınıfı, güvenliği artırmak için artık Güvenli Tarama API'si içeriyor
en iyi yoludur. Daha fazla bilgi için bkz.
Google Safe Browsing API.
Kısayolları ve widget'ları sabitleme
Android 8.0 (API düzeyi 26), kısayolların ve widget'ların uygulama içinde sabitlenmesi özelliğini kullanıma sunuyor. Uygulamanızda şunlar için sabitlenmiş kısayollar ve widget'lar oluşturabilirsiniz: desteklenen başlatıcılar, kullanıcı iznine tabi olur.
Daha fazla bilgi için Kısayolları ve widget'ları sabitleme özellik kılavuzuna bakın.
Maksimum ekran en boy oranı
Android 8.0 (API düzeyi 26), bir uygulamanın maksimum en boy oranının nasıl yapılandırılacağıyla ilgili değişiklikler getiriyor.
Öncelikle Android 8.0, uygulamanızın maksimum en boy oranını belirlemek için kullanabileceğiniz maxAspectRatio özelliğini kullanıma sunar. Ayrıca, Android 8.0 ve sonraki sürümlerde bir uygulamanın varsayılan maksimum en boy oranı, uygulamanın çalıştığı cihazın yerel en boy oranıdır.
Maksimum en boy oranını belirtme hakkında daha fazla bilgi için Birden fazla ekranı destekleme başlıklı makaleyi inceleyin.
Çoklu ekran desteği
Android 8.0 (API düzeyi 26) sürümünden itibaren platform, birden fazla ekran için gelişmiş destek sunar. Bir etkinlik, çoklu pencere modunu ve birden fazla ekranlı bir cihazda çalışıyorsa kullanıcılar etkinliği arasında geçiş yapabiliyoruz. Bir uygulama bir etkinliği başlattığında etkinliğin hangi ekranda çalıştırılacağını belirtebilir.
Not: Bir etkinlik çoklu pencere modunu destekliyorsa Android 8.0, bu etkinlik için çoklu ekran desteğini otomatik olarak etkinleştirir. Uygulamanızı, çoklu ekran ortamında gerektiği gibi çalıştığından emin olmak için test etmeniz gerekir.
Uygulamada birden fazla ekran olsa bile aynı anda yalnızca bir etkinlik devam ettirilmiş durumda olabilir. Odaklanılan etkinlik devam ettirildi durumundadır; diğer tüm görünür etkinlikler duraklatılır ancak durdurulmaz. Okuyucu Gelirleri Yöneticisi'ni birkaç aktivite görünürken etkinlik yaşam döngüsünü etkileyebilir. bkz. Çoklu Pencere Yaşam döngüsü.
Kullanıcı bir etkinliği bir ekrandan diğerine taşıdığında, sistem etkinliği yeniden boyutlandırır ve gerektiğinde çalışma zamanında değişiklikler yapar. Etkinliğiniz yapılandırma değişikliğini kendi başına yapabilir veya sistemin etkinliğinizi içeren süreci yok edip yeni boyutlarla yeniden oluşturmasına izin verebilir. Daha fazla bilgi için bkz. Kullanım Yapılandırması Değişiklikler.
ActivityOptions
, birden fazla ekranı desteklemek için iki yeni yöntem sunar:
setLaunchDisplayId()
- Etkinliğin başlatıldığında hangi ekranda gösterileceğini belirtir.
getLaunchDisplayId()
- Etkinliğin o anki başlatma ekranını döndürür.
adb kabuğu, birden fazla ekranı desteklemek için genişletildi.
shell start
komutu artık bir etkinliği başlatmak ve etkinliğin hedef ekranını belirtmek için kullanılabilir:
adb shell start <activity_name> --display <display_id>
Birleştirilmiş düzen kenar boşlukları ve dolgu
Android 8.0 (API düzeyi 26), karşıt tarafların olduğu durumları belirtmenizi kolaylaştırır
bir View
öğesi aynı kenar boşluğunu veya dolguyu kullanıyor.
Özellikle, düzen XML'inizde aşağıdaki özellikleri kullanabilirsiniz
dosyalar:
-
layout_marginVertical
layout_marginTop
ve aynı andalayout_marginBottom
. -
layout_marginHorizontal
layout_marginLeft
ve aynı andalayout_marginRight
. -
paddingVertical
paddingTop
ve aynı andapaddingBottom
. -
paddingHorizontal
paddingLeft
ve aynı andapaddingRight
.
Not: Uygulamanızın mantığını
farklı özellikleri
metin yönü dahil olmak üzere, bu dillerin ve kültürlerin
özellikleri,
layout_marginStart
,
layout_marginEnd
paddingStart
veya
paddingEnd
tıklayın. Bu değerleri, ek olarak kendiniz de ayarlayabilirsiniz.
yeni dikey ve yatay düzen özelliklerini kullanarak
metin yönüne göre değişir.
İşaretçi yakalama
Oyunlar, uzak masaüstü ve sanallaştırma istemcileri gibi bazı uygulamalar, fare işaretçisini kontrol etmekten büyük fayda sağlar. İşaretçi yakalama, yeni bir tüm fare etkinliklerini göndererek bu tür bir denetim sağlayan, Android 8.0'da (API düzeyi 26) odaklanmış bir görünüme sahiptir.
Android 8.0'dan itibaren uygulamanızdaki bir View
istekte bulunabilir
yakalanan işaretçi etkinliklerini işlemek için bir dinleyici tanımlar. İlgili içeriği oluşturmak için kullanılan
bu moddayken fare işaretçisi gizlenir. Görünüm, işaretçi yakalamayı serbest bırakabilir
kullandığında devre dışı bırakabilirsiniz. Sistem ayrıca, oturum açma
görünümün odağı kaybolduğunda (ör. kullanıcı açıldığında) işaretçi yakalama
başka bir uygulama.
Bu özelliği uygulamanızda nasıl kullanacağınız hakkında bilgi edinmek için İşaretçi yakalama başlıklı makaleyi inceleyin.
Uygulama kategorileri
Android 8.0 (API düzeyi 26), her uygulamanın uygun olduğu bir kategoriyi tanımlamasına olanak tanır.
uygun olmalıdır. Bu kategoriler benzer uygulamalara ait uygulamaları bir arada kümelemek için kullanılır
kullanıcılara sunmanın amaç veya işlevi (ör. Veri Kullanımı, Pil Kullanımı veya
Depolama Alanı Kullanımı.
<application>
metriğinizde android:appCategory
özelliği
manifesto etiketi.
Android TV başlatıcı
Android 8.0 (API düzeyi 26), içerik odaklı yeni bir Android TV ana ekran deneyimi içerir. Bu deneyim, Android TV emülatöründe ve Android 8.0 için Nexus Player cihaz resminde kullanılabilir. Yeni ana ekran her şeyi düzenler Kanallara karşılık gelen satırlarda video içeriği. Bu kanalların her biri sisteme bakacağız. Uygulamalar birden fazla kanal yayınlayabilir ve kullanıcılar, hangi kanalların bir seçim yapın. Android TV ana ekranında Sıradaki Video satırı da bulunur. Kullanıcının izleme alışkanlıklarına göre uygulamalardan gelen programlarla doldurulur. Uygulamalar, kullanıcı bir programa odaklandığında otomatik olarak oynatılan video önizlemeleri de sunabilir. Kanalları ve programları doldurmaya yönelik API'ler, Android 8.0 ile Android Destek Kitaplığı modülü olarak dağıtılan TvProvider API'lerinin bir parçasıdır.
Animatör Seti
Android 8.0 (API düzeyi 26) sürümünden itibaren AnimatorSet
API, geriye doğru arama yapmayı ve oynatmayı desteklemektedir. Arama, animasyon grubunun konumunu belirli bir zaman noktasına ayarlamanıza olanak tanır. Uygulamanızda geri alınabilecek işlemler için animasyonlar varsa tersten oynatma özelliği kullanışlıdır. İki ayrı animasyon tekniğini
tanımlamak yerine,
aynı oyunu tersten de oynayabilirsiniz.
Giriş ve gezinme
Klavyeyle gezinme kümeleri
Uygulamanızdaki bir etkinlik karmaşık bir görünüm hiyerarşisi kullanıyorsa (ör. Şekil 2: Kullanımı kolaylaştırmak için kullanıcı arayüzü öğesi gruplarını kümeler halinde düzenleyebilirsiniz klavyeyle gezinme olanağı sunar. Kullanıcılar, Bir kümeden diğerine gitmek için Chromebook cihazları. Gruplara örnek olarak şunlar verilebilir: yan paneller, gezinme çubukları, ana içerik alanları ve çok sayıda alt öğe içerebilecek öğeler.

Bir View
veya ViewGroup
öğesini küme haline getirmek için öğenin düzen XML dosyasında
android:keyboardNavigationCluster
özelliğini true
olarak ayarlayın veya uygulamanızın kullanıcı arayüzü mantıkındaki true
değerini setKeyboardNavigationCluster()
değerine iletin.
Not: Kümeler, iç içe yerleştirilmediği halde iç içe yerleştirilemez
kümeleri hiyerarşinin farklı düzeylerinde görünebilir. Örneğin
iç içe kümeler içeriyorsa çerçeve yalnızca en üstteki
ViewGroup
öğesi seçin.
Dokunmatik ekranı olan cihazlarda, her bir sisteme bağlı olarak
ViewGroup
nesnesi
true
öğesine android:touchscreenBlocksFocus
öğesi
Yalnızca kümenin o kümeye girip çıkmasına olanak tanır. Bu yapılandırmayı bir kümeye uygularsanız kullanıcılar kümeye girmek veya kümeden çıkmak için Sekme tuşunu ya da ok tuşlarını kullanamaz. Bunun yerine, küme gezinme klavye kombinasyonuna basmaları gerekir.
Varsayılan odağı göster
Android 8.0 (API düzeyi 26) sürümünde, kullanılabilmesi için gereken View
(yeniden) oluşturulan bir etkinlik devam ettirildikten ve kullanıcı bir düğmeye bastıktan sonra odağı al
klavye gezinme tuşunu kullanın. Bunu "varsayılan olarak odaklanmış" ayarını uygulamak için
ayarı, bir View
öğesinin
android:focusedByDefault
özelliğini true
UI öğesini içeren düzen XML dosyasını oluşturun veya true
öğesini
setFocusedByDefault()
arayüzü mantığıyla çalışır.
Konuşma çıkışı
Etkinlikler ve hizmetler,
İçerikleri dikte etmek ve telaffuz etmek için TextToSpeech
. Android 8.0 (API düzeyi 26) itibarıyla, uygulamanız bir metin okuma motorunun sentezlenmiş kelimeleri tek tek ne zaman konuşmaya başlayacağı hakkında daha hassas zamanlama bilgileri alabilir (motor bu bilgileri sağladığı sürece). Metin okuma motoru belirli kelimeleri okurken dikkati bu kelimelere çekmek için bu işlevi kullanabilirsiniz.
Bu metin okuma motoru iyileştirmelerini uygulamanızda kullanmak için bir
UtteranceProgressListener
örneği.
için bir işleyici ekleyerek
onRangeStart()
.
yöntemidir.
Metin okuma motoru, belirli bir metin aralığının sesli oynatılmasının başlamasını beklediği zamanı kaydetmek için rangeStart()
işlevini çağırır. Söz konusu metin aralığının sesi çalmaya başladığında uygulamanızın onRangeStart()
yöntemi yürütülür. Ardından, uygulamanız bu geri çağırmaya yanıt verebilir. Örneğin:
vurgulayarak, ifadeyle ilişkili metin aralığını vurgulayabilirsiniz.
Metin okuma motorunun oynatma ilerleme durumunu izleme hakkında daha fazla bilgi için UtteranceProgressListener
sınıf referansına bakın.
Sistem
Yeni StrictMode dedektörleri
Android 8.0 (API düzeyi 26), tanımlamaya yardımcı olmak için üç yeni StrictMode algılayıcı ekledi. uygulamanızdaki olası hatalar:
detectUnbufferedIo()
, uygulamanızın veri okuma veya yazma işlemlerini arabelleğe almadan gerçekleştirdiğini algılar. Bu durum, performansı önemli ölçüde etkileyebilir.detectContentUriWithoutPermission()
, uygulamanızın dışında bir etkinlik başlatırken uygulamanızın yanlışlıkla başka bir uygulamaya izin vermeyi unuttuğunu algılar.detectUntaggedSockets()
şu işlemleri algılar: uygulamanız, Hata ayıklama amacıyla trafiğinizi etiketlemek içinsetThreadStatsTag(int)
amaçlar.
Önbelleğe alınan veriler
Android 8.0 (API düzeyi 26), önbelleğe alınan verilerle ilgili daha iyi rehberlik ve davranışlar sunar. Artık her uygulamaya, getCacheQuotaBytes(UUID)
tarafından döndürülen şekilde önbelleğe alınmış veriler için bir disk alanı kotası veriliyor.
Sistemde disk alanı açmak gerektiğinde, ayrılan kotayı en çok aşan uygulamalardan önbelleğe alınan dosyalar silinir. Bu nedenle, önbelleğe alınan verilerinizi önbellekteki dosyalarınız sistemde bulunan son dosyalardan biri, verileri gerekir. Sistem, uygulamanızda hangi önbelleğe alınmış dosyaların silineceğine karar verirken önce en eski dosyaları (değiştirilme zamanına göre belirlenir) dikkate alır.
Ayrıca, sistemin önbelleğe alınan verilerinizi nasıl boşaltacağını kontrol etmek için dizin başına etkinleştirebileceğiniz iki yeni davranış da vardır:
StorageManager.setCacheBehaviorAtomic()
, bir dizinin ve tüm içeriğinin tek bir atomik birim olarak silinmesi gerektiğini belirtmek için kullanılabilir.setCacheBehaviorTombstone(File, boolean)
, belirtmek için kullanılabilir dizindeki dosyaların silinmek yerine 0 bayt olacak şekilde kısaltılmasını uzunluğuna sahip olmalıdır (boş dosyayı olduğu gibi bırakırsınız).
Son olarak, büyük dosyalar için disk alanı ayırmanız gerektiğinde yeni allocateBytes(FileDescriptor, long)
API'yi kullanabilirsiniz. Bu API, isteğinizi karşılamak için diğer uygulamalara ait önbelleğe alınmış dosyaları (gerekirse) otomatik olarak temizler. Cihazın yeni verilerinizi saklayacak yeterli disk alanına sahip olup olmadığına karar verirken getUsableSpace()
yerine getAllocatableBytes(UUID)
işlevini çağırın. getAllocatableBytes(UUID)
işlevi, sistemin sizin adınıza temizlemek istediği tüm önbelleğe alınmış verileri dikkate alır.
İçerik sağlayıcı sayfalama
İçerik sağlayıcıları, büyük bir veri kümesini tek seferde bir sayfa yükleme desteğini içerecek şekilde güncelledik. Örneğin, binlerce farklı fotoğraf içeren bir fotoğraf görseller, bir sayfada sunulacak verilerin bir alt kümesini sorgulayabilir. Her sayfa bir içerik sağlayıcı tarafından döndürülen sonuçların yüzdesi tek bir İmleçle temsil edilmektedir nesnesini tanımlayın. Bu özellikten yararlanmak için hem istemci hem de sağlayıcı sayfalama uygulamalıdır.
İçerik sağlayıcılardaki değişiklikler hakkında ayrıntılı bilgi için
ContentProvider
ve
ContentProviderClient
.
İçerik yenileme istekleri
ContentProvider
ve ContentResolver
sınıflarının her biri artık bir refresh()
yöntemi içeriyor. Bu sayede, istenen bilgilerin güncel olup olmadığını öğrenmek müşteriler için daha kolay hale geliyor.
ContentProvider
öğesini genişleterek özel içerik yenileme mantığı ekleyebilirsiniz. Sağlayıcınızın istemcilerine verileri kendiniz yenilemeye çalıştığınızı belirtmek için refresh()
yöntemini geçersiz kılarak true
döndürdüğünüzden emin olun.
İstemci uygulamanız
olarak da adlandırılan
refresh()
Bu yöntemi çağırırken yenilenecek verilerin URI'sini iletin.
Not: Bir ağ üzerinden veri isteğinde bulunuyor olabileceğiniz için,
refresh()
öğesini şuradan çağırmalısınız:
yalnızca içeriğin eski olduğuna dair güçlü bir gösterge olduğunda istemci tarafında görünür.
Bu tür bir içerik yenilemenin en yaygın nedeni, yenilemek için kaydır hareketine yanıt olarak mevcut kullanıcı arayüzünden güncel içeriği göstermesini açıkça istemektir.
JobScheduler iyileştirmeleri
Android 8.0 (API düzeyi 26), JobScheduler
için bir dizi iyileştirme sunar. Bu iyileştirmeler, uygulamanızın
yeni arka plana uyum sağlamak için
yürütme sınırlarıyla uğraşmanız gerekmeyebilir.
ya da örtülü yayın alıcıları olabilir.
JobScheduler
güncellemeleri şunları içerir:
-
Artık iş sırasını planlanmış bir işle ilişkilendirebilirsiniz. Bir işin sırasına çalışma öğesi eklemek için
JobScheduler.enqueue()
işlevini çağırın. İş çalışırken, beklemedeki işleri sıradan alıp işleyebilir. Bu işlev, daha önce arka plan hizmeti başlatmayı gerektiren kullanım alanlarının çoğunu (özellikleIntentService
'ü uygulayan hizmetler) yönetir. -
Android
Destek Kitaplığı 26.0.0 sürümünde, aynı sınıfa sahip yeni bir
JobIntentService
sınıfı kullanıma sunuluyor. işleviniIntentService
olarak tanımlar ancak hizmetlerini kullanmanızı da öneririz. -
Artık şu numarayı arayabilirsiniz:
JobInfo.Builder.setClipData()
ClipData
işlemini bir işle ilişkilendirin. Bu seçenek, URI izinlerininContext.startService()
'e dağıtılmasına benzer şekilde URI izinlerini bir işlevle ilişkilendirmenize olanak tanır. URI izinlerini, iş sıralarındaki intent'lerle de kullanabilirsiniz. -
Planlanmış işler artık birkaç yeni kısıtlamayı destekliyor:
JobInfo.isRequireStorageNotLow()
- Cihazın kullanılabilir depolama alanı düşükse iş çalışmaz.
JobInfo.isRequireBatteryNotLow()
- Pil seviyesi, kritik düzeyde veya kritik seviyenin altındaysa iş çalışmıyor eşik bu, cihazda düşük pil seviyesi gösterildiğidir uyarı sistem iletişim kutusu.
NETWORK_TYPE_METERED
- İş, çoğu hücresel veride olduğu gibi sayaçlı ağ bağlantısı gerektiriyor hakkında bilgi edindik.
Özel veri deposu
Android 8.0 (API düzeyi 26), tercihlerinize göre özel bir veri deposu sağlamanıza olanak tanır. Bu veri deposu Uygulamanız tercihleri bir bulutta veya yerel veritabanında depoluyorsa yararlı olabilir ya da sağlayabilirsiniz. Daha fazla bilgi için veri deposunun uygulanması için Özel Veri Deposu.
Medya geliştirmeleri
VolumeShaper
Yeni bir VolumeShaper
sınıfı var. Tekliflerinizi otomatikleştirmek ve optimize etmek için
kararma, az açılma ve çapraz geçişler gibi kısa otomatik hacim geçişleri gerçekleştirmek için bu işlevi kullanabilirsiniz.
VolumeShaper ile Genişliği Kontrol Etme bölümüne bakın.
konulu videomuzu izleyin.
Ses odağı iyileştirmeleri
Ses uygulamaları, ses odağını isteyerek ve vazgeçerek bir cihazda ses çıkışını paylaşır.
Uygulama, oynatmayı başlatarak veya durdurarak ya da ses düzeyini azaltarak odaktaki değişiklikleri yönetir.
Yeni bir AudioFocusRequest
sınıfı var. Bu sınıfı
requestAudioFocus()
,
Uygulamalar, ses odağındaki değişiklikleri ele alırken yeni özelliklere sahiptir:
otomatik kısma ve
gecikmeli odak kazancı.
Medya metrikleri
Yeni getMetrics()
yöntemi, yapılandırma ve performans bilgilerini içeren bir PersistableBundle
nesnesi döndürür. Bu nesne, özellikler ve değerlerin haritası olarak ifade edilir.
getMetrics()
yöntemi, şu medya sınıfları için tanımlanmıştır:
MediaPlayer.getMetrics()
MediaRecorder.getMetrics()
MediaCodec.getMetrics()
MediaExtractor.getMetrics()
Metrikler her örnek için ayrı olarak toplanır ve örneğin kullanım süresi boyunca saklanır. Kullanılabilir metrik yoksa yöntem şunu döndürür: null. Döndürülen gerçek metrikler sınıfa bağlıdır.
Medya Oynatıcı
Android 8.0 (API düzeyi 26) sürümünden itibaren MediaPlayer, DRM korumalı materyalleri ve HLS örnek düzeyinde şifrelenmiş medyayı oynatabilir.
Android 8.0, aşırı yüklü yeni bir
Ayrıntılı ayrıntı sağlayan seekTo()
komutu
kontrolüne sahip olur. Bir arama modunu belirten ikinci bir parametre içerir:
SEEK_PREVIOUS_SYNC
, medya konumunu, belirtilen zamandan hemen önce veya belirtilen zamanda bulunan bir veri kaynağıyla ilişkili bir senkronizasyon (veya anahtar) çerçevesine taşır.SEEK_NEXT_SYNC
, medya konumunu ilişkili bir senkronizasyon (veya tuş) çerçevesine taşır belirtilen zamandan hemen sonra veya belirli bir zamanda bulunan bir veri kaynağıyla eşleştirilir.SEEK_CLOSEST_SYNC
, medya konumunu belirli bir zamana en yakın veya belirtilen zamanda bulunan bir veri kaynağıyla ilişkili bir senkronizasyon (veya anahtar) karesine taşır.SEEK_CLOSEST
, medya konumunu, belirli bir zamanda veya en yakın konumda bulunan bir veri kaynağıyla ilişkili bir kareye (senkronizasyon veya anahtar kare olmayabilir) taşır.
Sürekli arama yaparken uygulamalar, nispeten daha yavaş ancak daha hassas olabilecek SEEK_CLOSEST
yerine SEEK_
modlarından birini kullanmalıdır.
MediaRecorder
- MediaRecorder artık MPEG2_TS biçimini destekliyor. Bu biçim,
yayın:
Kotlin
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_2_TS)
Java
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_2_TS);
MediaRecorder.OutputFormat
adresine göz atın MediaMuxer
artık istediğiniz kadar ses ve video akışını işleyebilir. Artık sınırlı durumda değilsiniz bir ses parçasına ve/veya bir video parçasına bağlayabilirsiniz. İstediğiniz kadar parçayı karıştırmak içinaddTrack()
simgesini kullanın.MediaMuxer
, her kare için kullanıcı tanımlı olan bir veya daha fazla meta veri kanalı da ekleyebilir ekleyebilirsiniz. Meta verilerin biçimi, uygulamanız tarafından belirlenir. Meta veri parçası yalnızca MP4 kapsayıcılarında desteklenir.
Meta veriler, çevrimdışı işleme için yararlı olabilir. Örneğin, sensörden gelen jiroskop sinyalleri videoyu sabitlemek için kullanılabilir.
Bir meta veri parçası eklenirken parçanın MIME biçimi önekle başlamalıdır
"application/". Meta veri yazmak, video/ses verilerini yazmakla aynıdır. Bu işlem,
verileri bir MediaCodec
kaynağından gelmediğinden emin olun. Bunun yerine, uygulama
ByteBuffer
writeSampleData()
yöntemini çağırın.
Zaman damgası, video ve ses parçalarıyla aynı zaman tabanında olmalıdır.
Oluşturulan MP4 dosyası, meta verilerin mime biçimini belirtmek için ISOBMFF'nin 12.3.3.2 numaralı bölümünde tanımlanan TextMetaDataSampleEntry
öğesini kullanır. Meta veri parçası olan dosyayı çıkarmak için MediaExtractor
kullanılırken MIME
biçimi MediaFormat
içine çıkarılır.
Medya dosyalarına erişim iyileştirildi
Depolama Alanı Erişim Çerçevesi (SAF), uygulamaların bir veri kaynağındaki dosyalara diğer uygulamalara erişim sağlayabilecek özel bir DocumentsProvider
göstermesine olanak tanır. Aslında
Hatta bir doküman sağlayıcısının,
bulunan veya şuna benzer bir protokol kullanan:
Medya Aktarım Protokolü (MTP).
Ancak büyük medya dosyalarına uzak bir veri kaynağından erişmek meydan okumalar:
- Medya oynatıcılar, doküman sağlayıcıdan bir dosyaya aranabilir erişim gerektirir. Büyük bir medya dosyasının uzak bir veri kaynağında bulunduğu durumlarda, doküman sağlayıcının tüm verileri önceden getirmesi ve anlık görüntü dosya tanımlayıcısı oluşturması gerekir. Medya oynatıcı, dosya olmadan dosyayı oynatamaz aksi takdirde, doküman sağlayıcı işlemi bitene kadar oynatma başlayamaz. dosyayı indirin.
- Fotoğraf uygulamaları gibi medya koleksiyonu yöneticileri, kapsam dışı olarak harici bir SD kartta depolanan medyaya ulaşmak için URI'lere erişim klasörlerini tıklayın. Bu erişim kalıbı, medyalar üzerinde toplu işlemler gerçekleştirir; örneğin, taşıma, kopyalama ve silme işlemleri oldukça yavaş.
- Medya koleksiyonu yöneticileri, URI'si verilen bir dokümanın konumunu belirleyemez. Bu da bu tür uygulamaların kullanıcıların medya dosyalarını nereye kaydedeceklerini seçmelerine izin vermesini zorlaştırır.
Android 8.0, Depolama Alanı Erişim Çerçevesi'ni iyileştirerek bu zorlukların her birini ele alır.
Özel doküman sağlayıcılar
Android 8.0'dan itibaren Depolama Erişim Çerçevesi, özel dokümanlar sağlayıcılarını barındıran dosyalar için aranabilir dosya tanımlayıcıları uzak veri kaynağı. SAF, yerel aranabilir dosya almak için bir dosya açabilir açıklayıcıdır. SAF daha sonra ayrı bayt isteklerini doküman sağlayıcıya iletir. Bu özellik, doküman sağlayıcının dosyanın tamamını önceden önbelleğe almak yerine bir medya oynatıcı uygulamasının istediği tam bayt aralığını döndürmesine olanak tanır.
Bu özelliği kullanmak için yeni çağrıyı yapma
StorageManager.openProxyFileDescriptor()
yöntemini çağırın. openProxyFileDescriptor()
yöntemi, geri çağırma işlevi olarak bir ProxyFileDescriptorCallback
nesnesi kabul eder. SAF,
bir istemci uygulaması, Search Console'da dosya işlemleri gerçekleştirdiğinde
doküman sağlayıcısından döndürülen dosya tanımlayıcısı.
Doğrudan doküman erişimi
Android 8.0 (API düzeyi 26) sürümünden itibaren, belirli bir mediaUri
ile aynı dokümana referans veren bir URI almak için getDocumentUri()
yöntemini kullanabilirsiniz.
Ancak döndürülen URI
DocumentsProvider
, medya koleksiyonu yöneticileri erişebilir
ve kapsamdaki dizinlerin ağaçlarını aktarmak zorunda kalmadan doğrudan belgeyi destekler.
Sonuç olarak medya yöneticileri, doküman üzerinde dosya işlemlerini çok daha hızlı gerçekleştirebilir.
Dikkat: getDocumentUri()
yöntemi yalnızca medya dosyalarını bulur, uygulamalara bu dosyalara erişme izni vermez. Erişim elde etme hakkında daha fazla bilgi edinmek için
izin almak için referans belgelere bakın.
Belge yolları
Android 8.0'da (API düzeyi 26) Depolama Aksesuar Çerçevesi'ni kullanırken, bir dokümanın kimliği verildiğinde dosya sisteminin kökünden gelen yolu belirlemek için hem DocumentsContract
hem de DocumentsProvider
sınıflarında bulunan findDocumentPath()
yöntemini kullanabilirsiniz. Yöntem, bu yolu
DocumentsContract.Path
nesne algılandı. Bir dosyanın
sistem aynı dokümana yönelik birden çok tanımlanmış yola sahipse yöntem,
belirtilen kimlike sahip dokümana ulaşmak için en sık kullanılan yoludur.
Bu işlev özellikle aşağıdaki senaryolarda yararlıdır:
- Uygulamanızda "farklı kaydet" özelliği kullanılıyor konumunu gösteren iletişim kutusu çok kolaylaşır.
- Uygulamanız, klasörleri arama sonuçları görünümünde gösteriyor ve alt öğeyi yüklemesi gerekiyor kullanıcı söz konusu klasördeki dokümanları seçerse emin olmanız gerekir.
Not: Uygulamanızın, yoldaki dokümanların yalnızca bir kısmına erişme izni varsa findDocumentPath()
işlevinin döndürdüğü değer yalnızca uygulamanızın erişebildiği klasörleri ve dokümanları içerir.
Ses çalmayı izleme
AudioManager
sistem hizmeti,
her biri etkin AudioPlaybackConfiguration
nesne
Belirli bir ses çalma oturumuyla ilgili bilgileri içeren Uygulamanız, getActivePlaybackConfigurations()
çağrısını yaparak şu anda etkin olan yapılandırma grubunu alabilir.
Android 8.0 (API düzeyi 26) sürümünden itibaren, bir veya daha fazla AudioPlaybackConfiguration
nesnesi değiştiğinde uygulamanızı bilgilendiren bir geri çağırma işlevi kaydedebilirsiniz. Bunun için AudioManager.AudioPlaybackCallback
örneğini göndererek registerAudioPlaybackCallback()
işlevini çağırın. AudioManager.AudioPlaybackCallback
sınıfı, ses oynatma yapılandırması değiştiğinde sistemin çağırdığı onPlaybackConfigChanged()
yöntemini içerir.
Bağlantı
Wi-Fi Aware
Android 8.0 (API düzeyi 26), Komşu bölümüne dayalı Wi-Fi Aware desteği ekler Farkındalık Ağ İletişimi (NAN) spesifikasyonu. Uygun Kablosuz Ağ Farkındalığı donanımına sahip cihazlarda, uygulamalar ve yakındaki cihazlar internet erişim noktası olmadan kablosuz ağ üzerinden birbirlerini keşfedip iletişim kurabilir. Donanım ve iş ortaklarımızın Wi-Fi Aware teknolojisini cihazlara mümkün olan en kısa sürede getirmelerini amaçlıyoruz. Örneğin, Wi-Fi Aware'i uygulamanıza nasıl entegre edeceğinize ilişkin bilgi için Wi-Fi Aware başlıklı makaleye bakın.
Bluetooth
Android 8.0 (API düzeyi 26), aşağıdaki özellikleri ekleyerek platformun Bluetooth desteğini zenginleştirir: özellikler:
- Şarkı kitaplığına göz atmayı sağlayan AVRCP 1.4 standardı desteği.
- Bluetooth Düşük Enerji (BLE) 5.0 standardı desteği.
- Sony LDAC codec'inin Bluetooth yığınına entegrasyonu.
Tamamlayıcı cihaz eşleme
Android 8.0 (API düzeyi 26), Bluetooth, BLE ve kablosuz ağ üzerinden tamamlayıcı cihazlarla eşlemeye çalışırken eşleme isteği iletişim kutusunu özelleştirmenize olanak tanıyan API'ler sağlar. Daha fazla bilgi için bkz. Tamamlayıcı Cihaz Eşleme.
Android'de Bluetooth'u kullanma hakkında daha fazla bilgi için Bluetooth kılavuzuna bakın. Örneğin, için bkz. Bluetooth bölümü Android 8.0 Davranış Değişiklikleri sayfası.
Paylaşılıyor
Akıllı paylaşım
Android 8.0 (API seviyesi 26), kullanıcıların kişiselleştirilmiş paylaşım tercihleri hakkında bilgi edinir ve her içerik türü için paylaşmak için doğru uygulamaları daha iyi anlamaktadır. Örneğin, bir kullanıcı bir makbuzun fotoğrafını çekerse, Android 8.0 gider takibi uygulaması önerebilir; Kullanıcı selfie çekerse veya bir sosyal medya uygulamanız resmi daha iyi işleyebilir. Android 8.0 tüm bunları otomatik olarak öğrenir kullanıcı davranışı ve kişiselleştirilmiş tercihler.
Akıllı paylaşım, image
dışındaki içerik türleri (ör. audio
, video
, text
, URL
vb.) için kullanılabilir.
Akıllı paylaşımı etkinleştirmek için en fazla üç tane ArrayList
ekleyin
dize ek açıklamaları içerir. Ek açıklamalar, içerikteki önemli bileşenleri veya konuları açıklamalıdır. Aşağıdaki kod örneğinde, intent'e nasıl ek açıklama ekleneceği gösterilmektedir:
Kotlin
val annotations: ArrayList<String> = arrayListOf( "topic1", "topic2", "topic3" ) intent.putStringArrayListExtra( Intent.EXTRA_CONTENT_ANNOTATIONS, annotations )
Java
ArrayList<String> annotations = new ArrayList<>(); annotations.add("topic1"); annotations.add("topic2"); annotations.add("topic3"); intent.putStringArrayListExtra( Intent.EXTRA_CONTENT_ANNOTATIONS, annotations );
Akıllı paylaşım ek açıklamaları hakkında ayrıntılı bilgi için bkz.
EXTRA_CONTENT_ANNOTATIONS
Metin sınıflandırıcı
Uyumlu cihazlarda uygulamalar, bir dizenin bilinen bir sınıflandırıcı öğe türüyle eşleşip eşleşmediğini kontrol etmek ve önerilen seçim alternatiflerini almak için yeni bir metin sınıflandırıcı kullanabilir. Sistem tarafından tanınan öğeler arasında adresler, URL'ler, telefon numaraları ve e-posta adresleri bulunur. Daha fazla bilgi için TextClassifier
başlıklı makaleyi inceleyin.
Erişilebilirlik
Android 8.0 (API düzeyi 26), kendi erişilebilirlik hizmetlerini oluşturan geliştiriciler için çeşitli yeni erişilebilirlik özelliklerini destekler:
- Erişilebilirlik ses düzeyini ayarlamak için yeni bir ses kategorisi.
- Giriş mekanizması olarak parmak izi hareketleri.
- Çok dilli metin okuma özellikleri
- Donanım tabanlı bir erişilebilirlik kısayolunu kullanın.
- Devamlı hareketler veya programatik vuruş sıraları için destek
- erişilebilirlik etkin çeşitli erişilebilirlik özelliklerinden birini çağırmak için "düğme (yalnızca yazılım tarafından oluşturulmuş gezinme alanı kullanan cihazlarda kullanılabilir).
- Standartlaştırılmış tek taraflı aralık değerleri gibi bir değer ekleyin.
- Bunun gibi, işleniyor İpucu metni ve ekrandaki metnin konumları dahil olmak üzere daha kolay kullanılabilir karakteri ekleyin.
Güvenlik ve Gizlilik
İzinler
Android 8.0 (API düzeyi 26) telefon özellikleriyle ilgili pek çok yeni izin sunuyor:
-
ANSWER_PHONE_CALLS
izni, uygulamanızın gelen telefon aramalarını programatik olarak yanıtlamasına olanak tanır. Gelen bir aramayı şurada işlemek için: oluşturmak içinacceptRingingCall()
. yöntemidir. -
READ_PHONE_NUMBERS
izni, uygulamanıza bir cihazda kayıtlı telefon numaralarına okuma erişimi verir.
Bu izinler hem tehlikeli olarak sınıflandırılır hem de PHONE
izin grubunun bir parçasıdır.
Yeni hesap erişimi ve keşif API'leri
Android 8.0 (API düzeyi 26), uygulamaların kullanıcı hesaplarına erişimi olur. Kimlik doğrulayıcılar, yönettikleri hesaplar için hesapları bir uygulamadan gizleyip gizlemeyeceklerine veya hesapları bir uygulamaya göstereceklerine karar vermek üzere kendi politikalarını kullanabilir. Android sistemi, belirli bir hesaba erişebilen uygulamaları izler.
Android'in önceki sürümlerinde,
kullanıcı hesaplarının,
alakası olmayan türler. Android 8.0,
addOnAccountsUpdatedListener(android.accounts.OnAccountsUpdateListener, android.os.Handler, boolean, java.lang.String[])
.
yöntemini kullanan uygulamalardır. Bu yöntem, uygulamaların
hangi hesap değişikliklerinin alınması gerektiği konusunda
API değişiklikleri
AccountManager, kimlik doğrulayıcıların bir hesabı hangi uygulamaların görebileceğini yönetmesine yardımcı olmak için altı yeni yöntem sağlar:
setAccountVisibility(android.accounts.Account, java.lang.String, int)
: Belirli bir kullanıcı hesabının ve paketin görünürlük düzeyini ayarlar bile olabilir.-
getAccountVisibility(android.accounts.Account, java.lang.String)
: Belirli bir kullanıcı hesabı ve paketi için görünürlük düzeyini alır bile olabilir. -
getAccountsAndVisibilityForPackage(java.lang.String, java.lang.String)
: Kimlik doğrulayıcıların, belirli bir belirtir. -
getPackagesAndVisibilityForAccount(android.accounts.Account)
: Kimlik doğrulayıcıların, belirli bir hesap için depolanan görünürlük değerlerini almasına olanak tanır. -
addAccountExplicitly(android.accounts.Account, java.lang.String, android.os.Bundle, java.util.Map<java.lang.String, java.lang.Integer>)
: Kimlik doğrulayıcıların, bir hesabın görünürlük değerlerini başlatmasına izin verir. -
addOnAccountsUpdatedListener(android.accounts.OnAccountsUpdateListener, android.os.Handler, boolean, java.lang.String[])
: Şuna birOnAccountsUpdateListener
işleyicisi ekler:AccountManager
nesne. Sistem bu işleyiciyi çağırır cihazdaki hesap listesi değiştiğinde.
Android 8.0 (API düzeyi 26), setAccountVisibility(android.accounts.Account, java.lang.String, int)
yöntemi kullanılarak ayarlanmayan uygulamaların görünürlük düzeylerini belirtmek için iki özel Paket Adı değeri sunar. PACKAGE_NAME_KEY_LEGACY_VISIBLE
görünürlük değeri, GET_ACCOUNTS
izini olan ve Android 8.0'den önceki Android sürümlerini hedefleyen veya imzaları herhangi bir Android sürümünü hedefleyen kimlik doğrulayıcıyla eşleşen uygulamalara uygulanır.
PACKAGE_NAME_KEY_LEGACY_NOT_VISIBLE
.
şunun için varsayılan görünürlük değeri sağlar:
daha önce ayarlanmamış olan
PACKAGE_NAME_KEY_LEGACY_VISIBLE
değil
geçerlidir.
Yeni hesap erişimi ve keşif API'leri hakkında daha fazla bilgi için AccountManager
ve OnAccountsUpdateListener
referanslarına bakın.
Test
Araç testi
Android 8.0 (API düzeyi 26), uygulamanızın araç testleri.
Varsayılan olmayan uygulama işlemlerinde çalıştır
Artık belirli bir araç testinin şuna göre çalıştırılacağını belirtebilirsiniz: varsayılan işlemin dışında bir işlem uygulayabilirsiniz. Bu yapılandırma, Uygulamanız farklı işlemlerde çalışan birden fazla etkinlik içeriyor.
Varsayılan olmayan işlem araçlarını tanımlamak için manifest dosyanıza gidin
ve ardından istediğiniz
<instrumentation>
öğesi. android:targetProcess
özelliğini ekleyin ve değerini aşağıdakilerden birine ayarlayın:
- Belirli bir işlemin adı.
- İşlem adlarının virgülle ayrılmış listesi.
- Aracın çalıştırılmasına olanak tanıyan bir joker karakter (
"*"
) belirtilen paketteki kodu yürüten, başlatılmış herhangi bir işlemeandroid:targetPackage
özelliği.
Enstrümantasyon testiniz çalışırken getProcessName()
çağrısını yaparak hangi işlemi test ettiğini kontrol edebilirsiniz.
Test sırasında sonuçları bildirme
Artık araç testiniz yürütülürken sonuçları raporlayabilirsiniz.
değil, addResults()
numaralı telefonu arayarak.
Testler için sahte intent'ler
Android 8.0 (API seviyesi 26), uygulamanızın etkinlikleri için izole, bağımsız kullanıcı arayüzü testleri oluşturmayı kolaylaştırmak amacıyla onStartActivity()
yöntemini kullanıma sunar. Test sınıfınızın çağırdığı belirli bir intent'i işlemek için Instrumentation.ActivityMonitor
sınıfının özel alt sınıfında bu yöntemi geçersiz kılarsınız.
Test sınıfınız niyeti çağırdığında, yöntem bir saplama döndürür
Yürütmek yerine Instrumentation.ActivityResult
nesnesi
düşünmesi gerekir. Testlerinizde bu örnek intent mantığını kullanarak etkinliğinizin farklı bir etkinliğe veya tamamen farklı bir uygulamaya ilettiğiniz intent'i nasıl hazırladığına ve işlediğine odaklanabilirsiniz.
Çalışma Zamanı ve Araçlar
Platform optimizasyonları
Android 8.0 (API düzeyi 26), platforma çalışma zamanı gibi bazı optimizasyonlar getirir. çeşitli performans iyileştirmeleri sağlar. Bu optimizasyonlar, eşzamanlı sıkıştırma ile çöp toplamayı, daha verimli bir şekilde kullanmanızı sağlar.
Bu optimizasyonlar, hem işletim sisteminde hem de uygulamalarda daha hızlı önyükleme sürelerinin yanı sıra daha iyi performans sağlar.
Java dil desteği güncellendi
Android 8.0 (API düzeyi 26), bazı ek OpenJDK Java API'leri için destek sağlar:
- OpenJDK 8'den
java.time
- OpenJDK 7'den
java.nio.file
vejava.lang.invoke
.
Yeni eklenen bu derslerdeki sınıflar ve yöntemler hakkında daha fazla bilgi edinmek için API referans belgelerine bakın.
Android Studio'da Java 8 dil özelliklerini kullanmak istiyorsanız son önizleme sürümünü indirmeniz gerekir.
Güncellenmiş ICU4J Android Framework API'leri
Android 8.0 (API düzeyi 26),
ICU4J Android Çerçevesi
ICU4J API'lerinin bir alt kümesi olan API'ler, uygulama geliştiricilerin
android.icu
paketi altında kullanılıyor. Bu API'ler yerelleştirme verilerini kullanır
APK'nızın ayak izini küçültmek için bu dosyayı derlemeyerek
APK'nızdaki ICU4J kitaplıkları.
Tablo 1. Kullanılan ICU, CLDR ve Unicode sürümleri bazı yolları da görmüştük.
Android API düzeyi | ICU sürümü | CLDR sürümü | Unicode sürümü |
---|---|---|---|
Android 7.0 (API düzeyi 24), Android 7.1 (API düzeyi 25) | 56 | 28 | 8.0 |
Android 8.0 (API düzeyi 26) | 58,2 | 30.0.3 | 9.0 |
Android'de uluslararasılaştırma hakkında daha fazla bilgi için ICU4J desteği, bkz. Android'de uluslararasılaştırma.
Android Enterprise
Android 8.0 (API seviyesi 26) çalıştıran cihazlar için yeni kurumsal özellikler ve API'ler kullanıma sunuldu. Bu özelliğin öne çıkan özellikleri şunlardır:
- Tümüyle yönetilen cihazlardaki iş profilleri, kurumların işleri ile hem kişisel verilerinizi yönetmek hem de yönetmektir.
- API yetkilendirmesi, cihaz ve profil sahiplerinin uygulama yönetimini diğer uygulamalara atamasına olanak tanır.
- Temel hazırlama akışında yapılan kullanıcı deneyimi iyileştirmeleri (yeni özelleştirme seçenekleri dahil) kurulum süresini kısaltır.
- Bluetooth, kablosuz ağ, yedekleme ve güvenlikle ilgili yeni denetimler, işletmelerin cihaz üzerinde daha fazla kontrol sahibi olmasını sağlar. Ağ etkinliği günlük kaydı, şirketlerin yardımcı olabilir.
Bu ve diğer yeni Android Enterprise API'leri ve özellikleri hakkında daha fazla bilgi edinmek için Android in the Enterprise (Android'in Kurumsal Kullanımı) başlıklı makaleyi inceleyin.