Google’ın Şimdi Android Açık Kaynak Projesinde Keşfetmek | tarafından Jaewoong Eum | Tem, 2022

Google'ın Şimdi Android Açık Kaynak Projesinde Keşfetmek |  tarafından Jaewoong Eum |  Tem, 2022

Google yeni bir açık kaynak projesini duyurdu. Şimdi Android’de. Bu makalede, genel mimariyi, her katmanı ve kullanılan teknoloji yığınlarını ele alacaksınız. Şimdi Android’de gibi proje Malzeme3, Jetpack Oluşturve uygulama performansı.

Dalışa başlamadan önce klonlamanızı öneririz. Şimdi Android’de yerel cihazınızda ve projeyi Android Studio’nuzla açma.

eğer inşa edersen Şimdi Android’desonuç şöyle görünecektir:

Artık Android’de şu içeriği kullanıyor: Youtube’da video oynatma listesi Google ekibi ve makaleler tarafından Android Geliştiricileribu uygulama ile Android ile ilgili becerileri öğrenebilirsiniz.

UI katmanını oluşturmak için hangi kitaplıkların kullanıldığını görelim. Şimdi Android’de proje:

Ardından, iş işlerini yürütmek için hangi kitaplıkların kullanıldığını görelim:

  • Bilgi deposu: Verileri, anahtar/değer çiftleri olarak yerel veri deposuna eşzamansız olarak depolayın.
  • Oda Veritabanı: Akıcı veritabanı erişimine izin vermek için SQLite üzerinde bir soyutlama katmanı sağlayarak yerel veritabanı oluşturur.
  • Güçlendirme: Retrofit, REST API’lerini tüketmeyi amaçlayan, tür açısından güvenli bir REST istemcisidir.
  • Kotlin Serileştirme: Bir ağ üzerinden aktarılabilen veya bir veritabanında depolanabilen JSON ve protokol arabellekleri gibi veri biçimlerini seri hale getirin ve seri durumdan çıkarın.
  • Kotlin Eşyordamları: Dil düzeyinde asenkron veya engelleyici olmayan çözümler sunar. Eşyordamlar, görevleri eşzamansız olarak işlemek için bu projede tamamen kullanılmıştır.
  • WorkManager: WorkManager, arka planda çalışan görevler için önerilen çözümdür ve bu, yerel verileri ağ kaynaklarıyla senkronize etmek için kullanılmıştır. Şimdi Android’de.

Ayrıca, Şimdi Android’de uygulama mimarisini ve performansını iyileştirmek için aşağıdaki kitaplıklarla oluşturulmuştur:

  • Kabza: Hilt, bağımlılık ekleme kapsayıcılarını kolayca oluşturmanıza ve yaşam döngülerini otomatik olarak yönetmenize olanak tanıyan bir bağımlılık ekleme kitaplığıdır.
  • Uygulama Başlatma: Uygulama Başlatma, bileşenleri uygulama başlangıcında başlatmanıza olanak tanır.
  • Temel Profiller: Temel Profiller, APK’nıza aşağıdakiler tarafından kullanılabilecek bir sınıflar ve yöntem özellikleri listesi ekleyerek uygulama performansını artırmanıza olanak tanır. Android Çalışma Zamanı.

Bu makalede, bu 2022 Google I/O’da kapsanan bazı kitaplıkları ve teknoloji yığınlarını uygulama mimarisiyle birlikte keşfedeceğiz.

Google tanıttı Uygulama mimarisi kılavuzu sağlam, yüksek kaliteli bir uygulama oluşturmak için en iyi uygulamaları ve önerilen mimarileri kapsamak.

Şimdi Android’de ile inşa edildi Uygulama mimarisi kılavuzubu yüzden mimarinin gerçek dünya projelerinde nasıl çalıştığını göstermek harika bir örnek olacaktır.

Şimdi uygulama mimarisini keşfedelim.

Genel mimari iki katmandan oluşur: a veri katmanı ve kullanıcı arayüzü katmanı.

Mimari aşağıdaki kavramları takip eder:

  • Uygulama mimarisi aşağıdaki gibidir tek yönlü veri akışı. Böylece UI katmanı olayları aşağı iletir ve veri katmanı sonuçları iletir.
  • Veri katmanı, verileri aşağıdakileri kullanarak akışlar olarak sunar: Kotlin Akışlarıve UI öğeleri, akışları gözlemleyerek ekranları yapılandırır.

Şimdi, daha fazla ayrıntı için her katmanı görelim.

UI Katmanı, kullanıcılarla etkileşime girebilecek düğmeler gibi UI öğelerinden oluşur ve GörünümModeli uygulama durumlarını tutan ve yapılandırma değiştiğinde verileri geri yükleyen.

UI katmanının ana rolü aşağıdaki gibidir:

  • UI durumlarını modelleme: UI durumları, aşağıdaki iş verilerini temsil eden mühürlü sınıflar/arayüzler olarak modellenmiştir. tek doğru kaynak.
  • Akışları UI durumlarına dönüştürme: Görünüm modeli, veri akışlarını iş verilerini temsil eden UI durumlarına dönüştürür. UI öğeleri, UI durumlarını gözlemler ve olası tüm durumları izleyerek bunları tuval üzerinde işler.
  • Kullanıcı etkileşimlerini işleme: Kullanıcı eylemleri, modelleri görüntülemek için UI öğelerinden akan kullanıcılarla iletişimdir ve görünüm modelleri uygun iş mantığını yürütür. Olaylar, UI öğelerinden veri katmanına doğru akmalıdır ve bu konsepte tek yönlü veri akışı denir.

Veri Katmanı, kalıcı ve veritabanından veri sorgulama ve ağdan uzak veri talep etme gibi iş mantığını içeren havuzlardan oluşur. Çevrimdışı bir ilk iş mantığı kaynağı olarak uygulanır ve aşağıdakileri takip eder: tek doğru kaynak prensip.

Veri katmanının ana rolü aşağıdaki gibidir:

  • Verileri UI katmanına gösterme: Veri katmanı, verileri akışlar olarak gösterir ve UI öğeleri akışları gözlemleyerek ekranları yapılandırır.
  • Gerçeğin tek kaynağını garanti edin: Şimdi Android’de yerel veritabanları ve ağlar gibi birden çok veri kaynağından uygulama verilerini toplayan tek bir gerçek kaynağı garanti eder. Depo, tek bir doğruluk kaynağı ilkesini garanti etmek için veri senkronizasyonunu kullanır.
  • Veri senkronizasyonu: Yerel veritabanı ve ağ verileri arasında verileri senkronize edin. Senkronizasyon çalışmaları, uygulama başlatıldığında başlatılır. Uygulama Başlatma.

Mimarinin genel akışı aşağıdaki şekil gibidir:

Adımların her birini tek tek görelim:

  1. Uygulama başlatma çalıştırmaları WorkManager Bu, veri senkronizasyonlarını gerçekleştirir.
  2. WorkManager, arka plan iş parçacığında veri senkronizasyonunu başlatır. Çalışan, ağdan uzak veri kaynakları ister ve uygulama verilerini yerel veritabanıyla senkronize eder.
  3. Depo, iç veri modelini akışlar olarak dış verilere dönüştürür ve akışı dış katmanlara sunar.
  4. UI öğeleri, akışları gözlemleyerek ekranları yapılandırır.

Şimdi Android’de ekranları yapılandırmak için %100 Jetpack Oluştur ile oluşturulmuştur. Jetpack Compose, üretim düzeyinde kullanım için kararlı hale geliyor ve Şimdi Android’de projenizde Compose’u nasıl kullanacağınızı gösterir.

Nasıl olduğunu keşfedelim Şimdi Android’de Jetpack Compose bileşenlerini kullanın.

Geçen yıl, Google’ın tasarım ekibi, uygulama temalarına rehberlik eden yeni bir tasarım dili olan Material You’yu duyurdu. Sağladığınız Malzeme dinamik renk şemalarıkullanıcı cihazının duvar kağıdından renk şemaları almanızı sağlayan bir renk çıkarma algoritmasıdır.

Projenize aşağıdaki bağımlılığı ekleyerek Malzeme Teması, Malzeme bileşenleri ve dinamik renk şemalarını kullanabilirsiniz:

Ardından, sistem temanız karanlık modda olsun veya olmasın farklı dinamik renk şemaları oluşturabilirsiniz:

Sizin Malzemeniz hakkında daha fazla bilgi için bkz. Jetpack Oluşturmak için Malzemeyi Keşfetmek.

Sonuç olarak, aşağıdaki gibi bileşenlerin farklı renklerini göreceksiniz:

Tema oluşturma, modern Android geliştirmenin temel parçalarından biridir ve her XML tabanlı UI öğesinde tutarlı temalar uygulamak kolay değildir. Ancak Jetpack Compose ile temaları tanımlamak ve bunları UI öğelerine uygulamak kolaydır ve özniteliklerin çoğu özelleştirilebilir.

Şimdi Android’de kullanır Malzeme Tema renk şemalarını tanımlamak ve temaları özelleştirmek için. Aşağıdaki örnekte de görebileceğiniz gibi, renk şemalarınızı ile tanımlayabilirsiniz. lightColorSceme ve darkColorSceme yöntemler:

Ayrıca, Şimdi Android’de kullanır dynamicLightColorScheme ve dynamicDarkColorScheme kullanıcı cihazının duvar kağıdından oluşturulan dinamik renk şemalarını elde etme yöntemleri.

Son olarak, NiaTheme birleştirilebilir işlev aşağıdaki gibi görünür:

Yukarıdaki tema örneğinde de görebileceğiniz gibi, özel veya dinamik renk şemaları uygulayabilir ve belirli durumlarda bunlar arasında kolayca geçiş yapabilirsiniz.

Son zamanlarda, çeşitli büyük ekranlı cihazlar piyasaya sürüldüğü için, büyük ekranları desteklemek, modern Android geliştirmenin önemli parçalarından biridir. Şimdi Android’de kullanarak uyarlanabilir düzenleri destekler Jetpack Pencere Yöneticisi.

İlk olarak, aşağıdaki bağımlılıkları dosyanıza eklemeniz gerekir. build.gradle dosya:

Ardından, kullanıcı cihazının genişlik boyutuna göre pencere boyutu sınıflarını şu şekilde hesaplayabilirsiniz: calculateWindowSizeClass aşağıdaki yöntem:

bu WindowSizeClass üç tür kesme noktasından oluşur: Kompakt, Ortave Genişletilmiş. Aşağıdaki dahili kodda görebileceğiniz gibi, bu üç kesme noktası, Malzeme tasarım kılavuzunun tasarım özelliklerine göre hesaplanır:

hesapladıktan sonra WindowSizeClass, Şimdi Android’de ile farklı UI öğeleri çizer. WindowSizeClass:

Yukarıdaki örnekte, ana ekran, aşağıdaki durumlarda alt çubuğu çizer: WindowSizeClass dır-dir Kompakt ve eğer bir yan çubuk WindowSizeClass dır-dir Orta veya Genişletilmiş.

Sonuç olarak, aşağıdaki resimde olduğu gibi, kullanıcı cihazının genişlik boyutunu takip eden farklı ekranlar göreceksiniz:

Uyarlanabilir düzenler hakkında daha fazla bilgi için bkz. Katlanabilir Cihazlar için Jetpack WindowManager’ı Keşfetme.

Android cihazlar çok sınırlı kaynaklar kullanır, bu nedenle harika kullanıcı deneyimleri sağlamak için Uygulama performansını artırmak Android geliştirmenin en önemli parçasıdır.

Jetpack Compose ile uygulama performansını nasıl iyileştirebileceğimizi keşfedelim.

Jetpack Compose şunları kullanır: hatırlamak Bir nesneyi bellekte depolamak için API. bu remember API, hesaplanan bir değeri şurada saklar: Kompozisyon sırasında depolanan değeri aşamalar ve geri yükler. yeniden kompozisyon.

Bir örnek görelim. Aşağıdaki kodlar, yeniden oluşturma gerçekleştiğinde tüm kişileri sıralayacaktır:

Kişi listesi çok sayıda öğe içeriyorsa, listeyi sıralamak yüksek bir masraf gerektirir ve uygulama performansını düşürebilir. Böylece remember sıralama gibi yüksek masraf gerektiren bir hesaplama değerini ezberlemek.

Yukarıdaki örnekte gösterildiği gibi, sıralanan değeri hafızaya kaydedebilirsiniz. remember API. Yeniden birleştirme gerçekleştiğinde hesaplama yürütülmeyecek ve sıralanan değeri yeniden kullanacaktır.

Ayrıca, rehberdeki anahtarlar olarak kişi listesini ve karşılaştırıcıyı kullanır. rememberbu nedenle sıralama yalnızca anahtar değerler değiştirilirse yeniden yürütülür.

Tembel listeleri keşfetmeden önce, aralarındaki farkın ne olduğunu görelim. Kolon ve Tembel Sütun Jetpack Compose’da.

Çok benziyorlar ve Column for deyimi ile öğelerin bir listesini de gösterebilir. Fakat Column bir öğe görünür olsun veya olmasın Sütun kapsamındaki tüm öğeleri işleyin ve listede çok sayıda öğe varsa uygulama performansını düşürebilir.

Diğer taraftan, LazyColumn benzer bir kavram benimsemiştir. Geri Dönüşüm Görünümüve LazyColumn ekranda yalnızca görünür öğeleri işleyin. Böylece, uygulama performansını artırabilirsiniz. LazyColumn onun yerine Column birçok öğe olduğunda.

Ardından, bir öğenin konumunun değiştiğini varsayalım. Şimdilik, LazyColumn listedeki farklı öğeler arasında ayrım yapamıyor, LazyColumn öğenin tamamı için yeniden oluşturulacaktır. Bu nedenle, bir öğenin konumu değiştirildiğinde kötü performans elde eder.

performansını artırabilirsiniz. LazyColumn vererek key aşağıdaki gibi her öğe için benzersiz bir kimliği temsil eden parametre:

Bir anahtar parametre vererek, LazyColumn bir öğenin konumu her değiştiğinde özel öğeleri ayırt edebilir ve tüm öğe için yeniden kompozisyon türetmez.

Jetpack Compose performansı hakkında daha fazla bilgi edinmek istiyorsanız, Performans oluşturma.

Temel profiller, bir APK ve AAB dosyasına dahil edilen ve aşağıdakiler tarafından kullanılabilecek sınıfların ve yöntemlerin özellikleridir. Android Çalışma Zamanı. Bir uygulama kurulurken veya güncellenirken özellikler önceden derlenebilir ve belleğe önceden yüklenebilir.

Android Çalışma Zamanı, uygulamaların başlatmayı optimize etmesine, kullanıcı arabirimi sıkışmasını azaltmasına ve uygulama performansını iyileştirmesine olanak tanıyan, özelliklerin önceden (AOT) derlemesini gerçekleştirir.

Özellikle Baseline Profiles, Jetpack Compose projesi için çok fazla uygulama performansını artırır. Çünkü, Jetpack Compose bir kütüphanedirbu, Android işletim sisteminde sistem kaynağı paylaşımına katılmadığı anlamına gelir.

Temel Profiller ile yöntem belirtimini oluşturmak için aşağıdaki bağımlılığı ekleyin. build.gradle dosya:

Şimdi Android’de kullanır BaselineProfileGenerator profiller oluşturmak için aşağıdaki sınıf:

Sonuç olarak, profil oluşturucu aşağıdaki spesifikasyonları bir Txt dosya ve Android Runtime tarafından önceden derlemek için kullanılacaktır:

Daha fazla bilgi için Temel Profiller.

Bu taksit araştırdı Şimdi Android’de ve uygulama mimarisi, Jetpack kitaplıkları, Compose ile UI katmanı ve uygulama performansı dahil olmak üzere modern Android geliştirmenin temel bölümlerini kapsıyordu.

Bu makalenin yazarını Twitter’da bulabilirsiniz. @github_skydoves veya GitHub Herhangi bir sorunuz veya geri bildiriminiz varsa. Stream ile güncel kalmak istiyorsanız, bizi Twitter’da takip edin @getstream_io daha fazla teknik içerik için.

Her zaman olduğu gibi, mutlu kodlamalar!

Jaewoong

Orijinal olarak şu adreste yayınlandı: GetStream.io.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.