Android 8.0 Özellikleri ve API'leri

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:

    Android 8.0'da (API düzeyi 26) bir bildirim menüsüne uzun basın.

    Kullanıcılar görüntülemek için uygulama başlatıcı simgelerine uzun basabilir en iyi uygulamaları paylaşacağız.

  • 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çin setSettingsText() 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 ve NOTIFICATION_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 kullanarak NotificationListenerService 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 üzere setColorized() 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çin MessagingStyle 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çin addHistoricMessage() yöntemini de kullanabilirsiniz.

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:

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.

Kullanıcının görüntülediği beş gezinme kümesi içeren örnek bir etkinlik
  klavye gezinme kümesi kısayolunu kullanarak gezinebilir. Kümeler şu şekilde düzenlenir: üst panel, sol yan panel, ana içerik alanı, alt panel ve yüzen işlem düğmesi.
Şekil 2. 5 gezinme içeren etkinlik kümeler
'nı inceleyin.

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çin setThreadStatsTag(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 (özellikle IntentService'ü 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şlevini IntentService 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 izinlerinin Context.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:

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çin addTrack() 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:

Uygulamanızı nasıl daha erişilebilir hale getireceğiniz hakkında daha fazla bilgi edinmek için Erişilebilirlik başlıklı makaleyi inceleyin.

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çin acceptRingingCall(). 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:

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şleme android: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:

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.