Android 8.0 (API düzeyi 26), çok çeşitli özellikler kullanıcılar ve geliştiriciler için yeni özellikler ve olanaklar. 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 (API düzeyi 26), etkinliklerin pencere içinde pencere (PIP) modunu kullanabilirsiniz. PIP, özel çoklu pencere modu türü çoğunlukla video oynatma için kullanılı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çinde oynatmayı duraklatmaz
gösterir. 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,
android:resizeableActivity
manifest özelliği.
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), PictureInPictureParams
adlı yeni bir nesneyi kullanıma sunuyor.
Bir etkinliğin nasıl davranması gerektiğini belirtmek için PIP yöntemlerine iletirsiniz.
PIP modunda olduğunda. 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 alır. Etkinliğin en boy oranı ve diğer yapılandırma ayarları args tarafından belirtilir. Herhangi bir alan args içindeki veriler boşsa sistem, istediğiniz zaman adıActivity.setPictureInPictureParams()
.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 devam eder başladı. 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 yaşar. Etkinlik PIP modunda değilse bu yapılandırma ayarları,enterPictureInPictureMode()
yöntemini çağırın.
Bildirimler
Android 8.0 (API düzeyi 26) sürümünde, bildirimleri Bildirim davranışını yönetmenin daha kolay ve tutarlı bir yolunu sunar. ve ayarlar. 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ü, bildirim kategorileri olarak ayarlayabilirsiniz. Nasıl yapıldığını bildirim kanallarını uygulamak için Yöneticilik yapmak bildirim kanallarına dikkat edin.
- Bildirim noktaları: Android 8.0, artık görüntüleme desteği de sunuyor noktalar veya rozetler gösterilir. 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 bkz. Bildirim rozetleri ekleyin.
- Erteleme: Kullanıcılar bildirimleri erteleyebileceği için bu bildirimler kaybolacak bir süre beklemenizi öneririz. 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ı: Şu numarayı arayabilirsiniz:
setSettingsText()
. ve uygulamanızın bağlantısı oluşturduğunuzda görünen metni ayarlamak bildirim ayarlarını kullanarak AmacıNotification.INTENT_CATEGORY_NOTIFICATION_PREFERENCES
. 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 bunları 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. Ayrıca,
kullanarak istediğiniz arka plan rengini
setColor()
İş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 ekranı daha fazla içerik sunar. Bunun için Şu ders içinMessagingStyle
sınıf mevcut: Mesajlaşmaya yönelik bildirimler de dahil olmak üzere. Ayrıca şunu da kullanabilirsiniz:addHistoricMessage()
yöntemini kullanarak bir ileti dizisine bağlam bilgisi Mesajlaşma ile ilgili bildirimlerdeki geçmiş mesajlar.
Otomatik doldurma çerçevesi
Hesap oluşturma, hesaba giriş yapma ve kredi kartı işlemleri zaman alır ve genelde hatalar. Kullanıcılar bu tür uygulamaların gerektirdiği uygulamaları kolayca hayal kırıklığına uğratabilir tekrarlayan görevlerden oluşur.
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 atabilirsiniz. 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'nızın boyutunu küçültür, uygulamayı büyütür ve birden fazla uygulamanın aynı yazı tipini paylaşmasına izin verir.
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. Daha sonra bu yazı tiplerine
yeni bir kaynak türünün yardımıyla font
.
Support Library 26, cihazlarda bu özellik için tam destek sağlar .
Yazı tiplerini kaynak olarak kullanma ve sistem yazı tiplerini alma hakkında daha fazla bilgi için XML'deki yazı tipleri bölümünü inceleyin.
TextView'u otomatik boyutlandırma
Android 8.0 (API düzeyi 26), metin genişletme veya otomatik olarak daraltılmasını sağlar. Bu, çok fazla metin boyutunu farklı ekranlarda veya dinamik içerikle optimize etmeyi daha kolay hale getirir. Android 8.0'da TextView'u otomatik boyutlandırma hakkında daha fazla bilgi için TextView'u otomatik boyutlandırma konusuna bakın.
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, yönetmenize yardımcı olacak çeşitli API'ler sağlar
uygulamanızda web içeriğini gösteren WebView
nesneleri.
Uygulamanızın kararlılığını ve güvenliğini iyileştiren bu API'ler,
takip etmek için:
- Sürüm API'si
- Google Güvenli Tarama API'sı
- Fesih İşleyici API'sı
- Oluşturucu Önem API'si
Bu API'lerin nasıl kullanılacağı hakkında daha fazla bilgi edinmek için Web Görünümlerini Yönetme.
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) sürümünde kısayolların ve diğer öğelerin uygulama içinde sabitlenmesi widget'lar. 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 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.
Android 8.0 ilk olarak maxAspectRatio özelliğini kullanarak Örneğin, uygulamanızın maksimum en boy oranını ayarlamak için kullanabilirsiniz. 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ı bildirme hakkında daha fazla bilgi için bkz. Birden Fazla Ekranı Destekleme.
Çoklu ekran desteği
Android 8.0 (API düzeyi 26) sürümünden itibaren platform, gelişmiş özellikler çoklu ekran desteği. 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 şunları destekliyorsa: çoklu pencere modunda, Android 8.0 otomatik olarak çoklu ekran desteğini kullanabilirsiniz. Uygulamanızı test edip çok ekranlı bir ortamda yeterli çalıştığından emin olmaktır.
Bir defada yalnızca tek bir etkinlik devam ettirilmiş durumda olabilir, uygulamanın birden fazla ekranı var. 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ğinin kendi başına üstesinden gelebilir veya sistemin etkinliğinizi içeren işlemi kaldırın ve yeni komut dosyasıyla yeniden oluşturun seçin. Daha fazla bilgi için bkz. Kullanım Yapılandırması Değişiklikler.
ActivityOptions
,
birden çok ekran:
setLaunchDisplayId()
- Etkinlik 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ı destekleyecek şekilde genişletilmiştir.
shell start
komutu artık bir etkinlik başlatmak için kullanılabilir.
ve etkinliğin hedef görüntüsünü belirtmek için:
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, uzaktan masaüstü ve sanallaştırma istemcileri gibi bazı uygulamalarda fare işaretçisi üzerinde kontrol sahibi olmanıza yardımcı olabilir. İş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 işleyici 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.
Uygulamanızda bu özelliği nasıl kullanacağınızla ilgili bilgi edinmek için bkz. İşaretçi yakalama.
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) yeni bir içerik odaklı, Android TV ana ekran deneyimi Android 8.0 için Android TV emülatörü ve Nexus Player cihaz resmi. 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 ayrıca şunları da sağlayabilir: Kullanıcı bir programa odaklandığında otomatik olarak oynatılan video önizlemeleri. API'ler Kanalların ve programların doldurulması, Android olarak dağıtılan TvProvider API'lerinin bir parçasıdır. Android 8.0'a sahip Destek Kitaplığı modülü.
Animatör Seti
AnimatorSet
API, Android 8.0 (API düzeyi 26) sürümünden itibaren sarma ve oynatmayı destekliyor.
değiştirilebilir. Arama özelliği, belirli bir konuma ayarlanan animasyonun konumunu
bir nokta olabilir. Uygulamanızda animasyonlar varsa ters oynatma özelliği yararlıdır
geri alınabilir. İ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ı. Doğru kullanım örnekleri kümeler şunları içerir: yan paneller, gezinme çubukları, ana içerik alanları ve öğeler içeren bir dizi alt öğe içerir.
'nı inceleyin.View
veya ViewGroup
öğesi oluşturmak için
bir kümenin yerine
android:keyboardNavigationCluster
özelliğini
öğenin düzen XML dosyasında true
veya true
iletin
uygulamanızın kullanıcı arayüzü mantığında setKeyboardNavigationCluster()
içine ekleyin.
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. Bunu uygularsanız
yapılandırmazsanız, kullanıcılar Sekme tuşunu veya ok tuşlarını kullanarak
kümenin içine veya dışına gitme; kümede gezinmeye basması gerekir
klavye kombinasyonunu kullanın.
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,
İçeriği dikte etmek ve telaffuz etmek için TextToSpeech
. Şu tarih itibarıyla:
Android 8.0 (API düzeyi 26) ile uygulamanız daha doğru zamanlama bilgileri alabilir.
sentezlenmiş kelimeleri tek tek konuşmaya başladığında,
ancak motor bu bilgileri sağladığı sürece. Bu işlevi,
metin okuma motoru konuşurken belirli kelimelere dikkat çekmek için
gerekir.
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
Kaydedilecek rangeStart()
belirli bir metin aralığındaki sesin çalınmasını beklediği nokta
başlayabilirsiniz. Söz konusu metin aralığının sesi çalınmaya başladığında
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 okumada oynatma ilerleme durumunu izleme hakkında daha fazla bilgi
motor, UtteranceProgressListener
sınıfını inceleyin
bir referans noktası olarak kabul edilir.
Sistem
Yeni StrictMode algılayıcıları
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()
şu işlemleri algılar: Uygulamanız arabelleğe alınmadan verileri okuyor veya yazıyor. Bu da, bazı yolları da görmüştük.detectContentUriWithoutPermission()
şunu yapacak: uygulamanız yanlışlıkla başka bir uygulamaya izin vermeyi unuttuğunda bu; uygulamanızın dışında bir Etkinlik başlatırsanız.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 sağlar. Her biri
uygulamasına artık
getCacheQuotaBytes(UUID)
Sistemin disk alanı boşaltması gerektiğinde, önbelleğe alınan dosyaları uygulamalardan silerek başlar. kotayı en çok aşanları gösterir. Bu nedenle, önbelleğe alınan verilerinizi önbellekteki dosyalarınız sistemde bulunan son dosyalardan biri, verileri gerekir. Sistem, uygulamanızın içinde önbelleğe alınan hangi dosyaların silineceğine karar verirken en eski dosyaları göz önünde bulundurmalısınız (değiştirme zamanına göre belirlenir).
Ayrıca, kontrol etmek için dizin bazında etkinleştirebileceğiniz iki yeni davranış da vardır: sistem önbelleğe alınan verilerinizi nasıl kurtarır?
StorageManager.setCacheBehaviorAtomic()
, belirtmek için kullanılabilir bir dizinin ve tüm içeriklerinin tek bir atom birimi olarak silinmesi gerektiğini ifade eder.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
Otomatik olarak temizlenecek allocateBytes(FileDescriptor, long)
API
İsteğinizi yerine getirmek için (gerektiğinde) diğer uygulamalara ait önbelleğe alınmış dosyalar. Projenin başarılı olup olmadığına
cihazda yeni verilerinizi saklamaya yetecek kadar disk alanı var,
getAllocatableBytes(UUID)
-
İlki, önbelleğe alınmış tüm öğeleri dikkate aldığı için getUsableSpace()
verilerin temizlenmesine yardımcı olur.
İçerik sağlayıcı sayfalama
İçerik sağlayıcıları, büyük boyutlu tek seferde bir sayfaya sığdırır. Örneğin, binlerce 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 özelliği kullanabilirsiniz.
İç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ıfın her birinde artık bir
refresh()
yöntemini kullanarak müşterilerin
ve istenen bilgilerin güncel olup olmadığını kontrol etmelidir.
Şunu genişleterek özel içerik yenileme mantığı ekleyebilirsiniz:
ContentProvider
Döndürülecek refresh()
yöntem
true
(sağlayıcınızın müşterilerine, bağlantı kurmaya çalıştığınızı belirtir)
seçeneğini tıklayın.
İstemci uygulamanız
olarak da adlandırılan
refresh()
Bu çağrı yapılırken
yöntemini kullanıyorsanız 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 yenilemesinin en yaygın nedeni,
yenilemek için kaydırma
güncel içeriği göstermesi için geçerli kullanıcı arayüzünden açıkça istekte bulunur.
JobScheduler iyileştirmeleri
Android 8.0 (API düzeyi 26), JobScheduler
ile ilgili çok sayıda iyileştirme sunmaktadır. 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. Şuna bir çalışma öğesi eklemek için:
bir iş sırası,
JobScheduler.enqueue()
. İş çalışırken, beklemedeki işleri sıradan alıp işleyebilir. Bu işlev, önceden karşılaşabileceğiniz pek çok kullanım arka plan hizmetinin başlatılmasını, özellikle de bu hizmetleriIntentService
-
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, bu işlemlerde olduğu gibi, URI izni izinlerini bir işle izinlerContext.startService()
etki alanına yayılabilir. URI izni izinlerini niyetlerle de kullanabilirsiniz iş sıralarına alabilir. -
Planlanmış işler artık birkaç yeni kısıtlamayı destekliyor:
JobInfo.isRequireStorageNotLow()
- Cihazın kullanılabilir depolama alanı azsa 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ğı geliştirmeleri
Ses uygulamaları, ses odağını isteyerek ve vazgeçerek bir cihazda ses çıkışını paylaşır.
Bir uygulama, oynatmayı başlatarak, durdurarak veya ses düzeyini azaltarak odaktaki değişiklikleri işler.
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 bir getMetrics()
yöntemi, PersistableBundle
değeri döndürüyor
yapılandırma içeren nesne
ve performans bilgileri, öznitelikler ve değerler 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 süresi kadardı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'dan (API düzeyi 26) itibaren MediaPlayer oynatabilir DRM korumalı materyal ve HLS örnek düzeyinde şifrelenmiş medya.
Android 8.0, aşırı yüklü yeni bir
Ayrıntılı ayrıntı sağlayan seekTo()
komutu
kontrolüne sahip olur. Arama modunu belirten ikinci bir parametre içerir:
SEEK_PREVIOUS_SYNC
, medya konumunu bir senkronizasyon (veya tuş) karesine taşır belirtilen zamandan hemen önce veya verilen bir veri kaynağıyla ilişkilendirilmişSEEK_NEXT_SYNC
, medya konumunu ilişkili bir senkronizasyon (veya tuş) çerçevesine taşır belirtilen zamandan hemen sonra veya belirli bir zamanda yer alan bir veri kaynağıyla eşleştirilir.SEEK_CLOSEST_SYNC
, medya konumunu bir senkronizasyon (veya tuş) karesine taşır belirtilen zamana en yakın veya belirtilen zamana en yakın veri kaynağıyla ilişkilendirilmişSEEK_CLOSEST
, medya konumunu bir kareye taşır (senkronizasyon olması gerekmez) veya animasyon karesi) size en yakın veya en yakın veri kaynağıyla düşünmesi gerekir.
Sürekli arama yaparken uygulamalar, nispeten daha yavaş ancak daha hassas olabilecek SEEK_CLOSEST
yerine SEEK_
modlarından birini kullanmalıdır.
Medya Kaydedicisi
- 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);
MediaMuxer
artık istenilen sayıda 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.addTrack()
hesabını kullan istediğiniz kadar parça miksleyebilirsiniz.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. İlgili içeriği oluşturmak için kullanılan Meta veri parçası, yalnızca MP4 kapsayıcıları için desteklenir.
Meta veriler, çevrimdışı işleme için yararlı olabilir. Örneğin, sensör ise video sabitlemesi 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ı, bölümde tanımlanan TextMetaDataSampleEntry
öğesini kullanır
12.3.3.2'deki (ISOBMFF) meta verilerin mime biçimini belirtmek için kullanılır. Meta veri parçası olan dosyayı çıkarmak için MediaExtractor
kullanılırken MIME
biçimi MediaFormat
içine çıkarılır.
İyileştirilmiş medya dosyası erişimi
İlgili içeriği oluşturmak için kullanılan
Depolama Erişim Çerçevesi (SAF), uygulamaların özel
DocumentsProvider
izniyle dosyalara erişebilirsiniz
diğer uygulamalara aktarmanızı sağlar. 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, bir belge sağlayıcıdan dosyaya aranabilir erişim gerektirir. Büyük bir medya dosyasının uzak bir veri kaynağında bulunduğu durumlarda, belge sağlayıcı tüm verileri önceden getirmeli ve anlık görüntü oluşturmalıdır dosya tanımlayıcısıdır. 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, dokümanların konumunu URI. Bu durum, kullanıcıların bu tür uygulamaların seçim yapmalarına izin vermelerini zorlaştırır. kaydedileceği yeri seçin.
Android 8.0, Depolama Alanı Erişimini iyileştirerek bu zorlukların her birini ele alıyor Çerçeve.
Özel belge 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. Daha sonra SAF, farklı bayt isteklerini belgelere teslim eder. sağlar. Bu özellik, bir doküman sağlayıcının tam aralığı döndürmesine olanak sağlar bir medya oynatıcı uygulamasının tüm dosyayı önbelleğe almak yerine istediği bayt miktarının sayısı dosya ileterek.
Bu özelliği kullanmak için yeni
StorageManager.openProxyFileDescriptor()
yöntemini çağırın. İlgili içeriği oluşturmak için kullanılan
openProxyFileDescriptor()
yöntemi, geri çağırma olarak bir ProxyFileDescriptorCallback
nesnesini 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ı.
Dokümana doğrudan erişim
Android 8.0 (API düzeyi 26) sürümünden itibaren,
getDocumentUri()
yöntemini kullanarak
belirtilen mediaUri
ile aynı dokümana başvuruda bulunan bir URI alırsınız.
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şlemleri gerçekleştirebilir.
çok daha hızlı şekilde sunuyor.
Dikkat: getDocumentUri()
yöntemi yalnızca medya dosyalarını bulur; uygulamalara izin vermez
bu dosyalara erişebilir. Erişim elde etme hakkında daha fazla bilgi edinmek için
izin almak için referans belgelere bakın.
Belgeye giden yollar
Android 8.0 (API düzeyi 26) sürümünde Depolama Erişim Çerçevesi'ni kullanırken
findDocumentPath()
yöntemi (her ikisinde de kullanılabilir)
DocumentsContract
ve
DocumentsProvider
kök dizin yolunu belirlemek için bir belgenin
Kimlik. 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 kullanışlı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 tıklayın.
Not: Uygulamanızın dokümanlardan yalnızca bazılarına erişim izni varsa
yolda findDocumentPath()
işlevinin döndürülen değeri yalnızca
uygulamanızın erişebileceği klasörler ve dokümanlar.
Ses çalmayı izleme
AudioManager
sistem hizmeti,
her biri etkin AudioPlaybackConfiguration
nesne
Belirli bir ses çalma oturumuyla ilgili bilgileri içeren Uygulamanız şunları yapabilir:
şunu çağırarak o anda etkin olan yapılandırmalar kümesini almak için
getActivePlaybackConfigurations()
Android 8.0 (API düzeyi 26) sürümünden itibaren, uygulamanızın
bir veya daha fazla
AudioPlaybackConfiguration
nesne değiştirildi. Bunun için,
registerAudioPlaybackCallback()
çağrısı, şunun bir örneğini iletir:
AudioManager.AudioPlaybackCallback
. İlgili içeriği oluşturmak için kullanılan
AudioManager.AudioPlaybackCallback
sınıfı şunu içeriyor:
onPlaybackConfigChanged()
yöntemini çağırın.
oynatma yapılandırmasında yapılan değişiklikler.
Bağlantı
Kablosuz Ağ Uyumlu
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 Wi-Fi Aware donanımları, uygulamalar ve yakındaki cihazlar keşfedip iletişim kurabilir kablosuz bağlantı üzerinden kullanabilirsiniz. Donanımımızla birlikte 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), şunun üzerinden tamamlayıcı cihazlarla eşlemeye çalışırken eşleme isteği iletişim kutusu: Bluetooth, BDE ve kablosuz. Daha fazla bilgi için bkz. Tamamlayıcı Cihaz Eşleme.
Android'de Bluetooth'u kullanma hakkında daha fazla bilgi için şuraya bakın: Bluetooth rehberi. Ö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 düzeyi 26), kullanıcıların kişiselleştirilmiş paylaşım ve en uygun içerik türlerini daha iyi anlar pek çok uygulama vardı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ışına ve kişiselleştirilmiş tercihler.
Akıllı paylaşım, image
dışındaki içerik türlerinde çalışır. Örneğin:
audio
, video
, text
, URL
,
vb.
Akıllı paylaşımı etkinleştirmek için en fazla üç tane ArrayList
ekleyin
dize ek açıklamaları içerir. Ek açıklamalar
içerikteki ana bileşenleri veya konuları
açıklamak önemlidir. Aşağıdaki kod örneği
Amaca ek açıklamaların nasıl ekleneceğini gösterir:
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 yeni bir Metin Sınıflandırıcı kullanarak
dize, bilinen bir sınıflandırıcı öğe türüyle eşleşiyor ve önerilen seçimi al
sağlayabilir. Sistem tarafından tanınan varlıklar arasında adresler, URL'ler
telefon numaraları ve e-posta adresleri. Daha fazla bilgi için bkz.
TextClassifier
Erişilebilirlik
Android 8.0 (API düzeyi 26), kendi erişilebilirlik hizmetlerini oluşturan geliştiriciler:
- Ayarlama için yeni bir ses seviyesi kategorisi erişilebilirlik ses seviyesi.
- Parmak izi hareketlerini kullanabilirsiniz.
- Çok Dilli metin okuma özellikleri de dahildir.
- Donanım tabanlı bir erişilebilirlik kısayolunu kullanın.
- Destek devam ediyor hareketler veya programatik çizgi dizileri.
- 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 sunmaktadır:
-
ANSWER_PHONE_CALLS
izni, uygulamanızın yanıt vermesine olanak tanır programlı bir şekilde gelen telefon aramalarıdır. Gelen bir aramayı şurada işlemek için: öğrenmek içinacceptRingingCall()
. yöntemidir. -
READ_PHONE_NUMBERS
izni, uygulamanıza okuma erişimi verir bir cihazda depolanan telefon numaralarıyla ilgilidir.
Bu izinlerin ikisi de şu şekilde sınıflandırılır:
tehlikeli
ve her ikisi de
PHONE
izin grubu.
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. Yönettikleri hesaplar için Kimlik doğrulayıcılar, bu hesaplarda hesapların gizlenip gizlenmeyeceğini belirlemek için ortaya çıkarmanıza yardımcı olabilir. Android sistemi, şunları yapabilen uygulamaları izler: belirli bir hesaba erişebilirsiniz.
Android'in önceki sürümlerinde,
kullanıcı hesaplarının, şuna sahip hesaplar dahil, tüm hesaplarla ilgili güncelleme alması gerekiyordu:
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.
API değişiklikleri
Hesap Yöneticisi, kimlik doğrulayıcıların hangi uygulamalar bir hesabı görebilir:
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 seçilebilir.-
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 seçilebilir. -
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), görünürlüğü belirtmek için iki özel Paket Adı değeri sunuyor
kullanılarak ayarlanmayan uygulamalar için
setAccountVisibility(android.accounts.Account, java.lang.String, int)
.
yöntemidir. İlgili içeriği oluşturmak için kullanılan
PACKAGE_NAME_KEY_LEGACY_VISIBLE
.
görünürlük değeri,
GET_ACCOUNTS
izinlerini ve hedef sürümlerini
Android 8.0'dan eski Android 8.0 veya
herhangi bir Android sürümünü hedefleyen kimlik doğrulayıcıyla eşleşen imzalar.
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
referans:
AccountManager
ve
OnAccountsUpdateListener
.
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. URL'yi
android:targetProcess
özelliğini ve değerini
şu:
- 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.
Araç testiniz çalışırken hangi sürecin
getProcessName()
numaralı telefonu arayarak test ediyor.
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 taklit amaçları
Uygulamanız için izole, bağımsız kullanıcı arayüzü testleri oluşturmayı kolaylaştırmak amacıyla
etkinlikleri için Android 8.0 (API düzeyi 26)
onStartActivity()
yöntemini çağırın. Bu yöntemi
Belirli bir işlemi işlemek için Instrumentation.ActivityMonitor
sınıf
test sınıfınızın çağırdığı niyete göre belirlenir.
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 amaç mantığını kullanarak
etkinliği nasıl hazırladığı ve işlediğiyle ilgili
daha fazla bilgi
veya tamamen farklı bir uygulamaya
yönlendirebilirsiniz.
Ç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 başlatma sürelerinin kısalmasını ve hem İşletim sistemi ve uygulamalar.
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.
Şunu yapmak istiyorsanız: Android Studio'da Java 8 dil özelliklerini kullanıyorsanız en son önizleme sürümünü indirin.
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ı.
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
Şu özelliklere sahip cihazlar için yeni kurumsal özellikler ve API'ler kullanıma sunuldu: Android 8.0 (API düzeyi 26). Bu özelliğin öne çıkan özellikleri şunlardır:
- Tümüyle yönetilen cihazlardaki iş profilleri, kurumların işleri ile kişisel verilerinizi yönetecek.
- API yetkisi, cihaz sahiplerinin ve profil sahiplerinin uygulama ataması yapmasına olanak tanır başka uygulamalar da var.
- Temel hazırlık akışında kullanıcı deneyimi iyileştirmeleri (yeni sürüm özelleştirme seçenekleri) kurulum süresini kısaltır.
- Bluetooth, kablosuz ağ, yedekleme ve güvenlik üzerindeki yeni kontroller sayesinde kuruluşlar yönetebiliyorsunuz. Ağ etkinliği günlük kaydı, şirketlerin yardımcı olabilir.
Bu ve diğer yeni Android kurumsal API'leri ile özellikleri hakkında daha fazla bilgi edinmek için: Kurumsal Android'de Android başlıklı makaleyi inceleyin.