Android Mimarisi Bileşenleri Hakkında Bilmeniz Gereken Her Şey

Yayınlanan: 2022-01-02

Mimari Bileşenler

Mimarlık, geliştirme süreci başlamadan önce yapılması gereken sabit bir plandır. Mimari bileşenler, uygulamayı düzenli tutar, tüm bileşenleri birbirine bağlar ve sağlam, doğrulanabilir ve bakımı yapılabilir uygulamalar tasarlamanıza yardımcı olan bir kitaplık koleksiyonu sağlar. Android'in yeni mimarisi, güvenliği olan ideal bir uygulama oluşturmak ve bakımı ve test edilmesi zor olan şişirilmiş sınıflardan kaçınmak için bazı temel ilkeler önerir.

Yapı taşları

Yapı taşları için temel örnekler, Etkinlik, Görünüm, Amaçlar, Hizmetler, Parçalar, Manifest Dosyası, AVD'dir (Android Sanal Aygıt). Bu bloklar, rasyonel uygulamanın bileşen mimarisinin temsilidir ve ayrıca geliştiricinin sorunlu noktalarının işaretleridir.

İlk set size yardımcı olur

  • Bellek ve kaynak sızıntılarını önlemek için etkinliğinizi ve yaşam döngülerinizi otomatik olarak yönetin
  • Java veri nesnelerini bir SQLite veritabanına devam ettirin

Bileşenler:

1. Yaşam Döngüsü Bileşenleri

Bu bileşen, yaşam döngüsü farkındalığını eklemek için kullanılır. Lifecycle bileşenleri Lifecycle, LifecycleOwner ve LifecycleObserver'ı içerir

Yaşam döngüsü

Şimdiye kadar yaşam döngüsü, sistemin kendisi tarafından yönetilen soyut bir sınıftır. Ancak mevcut senaryoda, Yaşam Döngüsü, bileşenin durumunu tanımlar ve uygun zamanda buna göre davranır ve görevi bitirir.

Yaşam Döngüsü Sahibi

LifecycleOwner, getLifecycle() yönteminden bir yaşam döngüsü nesnesi almak için uygulayabilen bir arabirimdir. ProcessLifecycleOwner, tüm bir sürecin yaşam döngüsünü yönetmek istediğinizde kullanışlıdır.

Yaşam DöngüsüObserver

LifecycleObserver, Faaliyetler ve Parçalar gibi LifecycleOwner bileşenlerini gözlemler. LifecycleOwner.Event'i alır ve açıklama yöntemleri aracılığıyla bunlara tepki verir.

Bunların hepsini birlikte uygulayarak, Yaşam Döngüsü duyarlı uygulama oluşturabiliriz.

  • Yaşam Döngüsü gözlemcisini uygulama

 public class TestObserver, LifecycleObserver'ı uygular {

public MyObserver(Yaşam döngüsü yaşam döngüsü) {

// yaşam döngüsü gözlemini başlatır

lifecycle.addObserver(bu);

...

}

// İlişkili yaşam döngüsü bu olaylardan geçtiğinde çağrılan açıklamalı yöntemler

@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)

public void onResume() {

}

@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)

public void onPause() {

}

}

Şimdi bu gözlemciyi uygulama bileşenimizde kullanabiliriz, aşağıdaki uygulamayı kullanarak TestObserver gözlemci = new TestObserver(aLifecycleOwner.getLifecycle());

2. Canlı Veri

LiveData bileşeni, gözlemlenebilen bir değer içeren bir veri sahibidir. Liveata ile Activity veya Fragment güncellendiğinde bilgilendirileceğiz, böylece kullanıcı arayüzünüz her zaman güncellenecektir. Tipik modellerinizin etrafındaki, o modelde bir şey değiştiğinde gözlemcileri bilgilendiren bir sarmalayıcıdır. Liveata'nın ana avantajı, mevcut olmayan görünümler nedeniyle daha fazla bellek sızıntısı ve NullPointerExceptions olmamasıdır.

  • LiveData nesneleri oluşturun

 genel sınıf MyViewModel, ViewModel'i genişletir {
// String ile LiveData oluşturun
özel MutableLiveData<String> mData;
public MutableLiveData<String> getData() {
if ( mData == boş) {
mData = new MutableLiveData<String>();
}
mData'yı döndür;
}
}
  • LiveData nesnelerini gözlemleyin

 Aşağıdaki kod, LiveData nesnesinin nasıl gözlemleneceğini gösterir:
public class MyActivity, AppCompatActivity'yi genişletir {
public void onCreate(Bundle saveInstanceState) {
super.onCreate(savedInstanceState);
MyViewModel modeli = ViewModelProviders.of(this).get(MyViewModel .class);
model.getData().observe(bu, veri -> {
// kullanıcı arayüzünü güncelle
});
}
}

3. Modeli Görüntüle

ViewModel, kullanıcı arayüzü bileşenleriniz (Etkinlik veya Parça) için yaşam döngüsü bilinçli bir şekilde veri sağlamak ve sürdürmek için kullanışlıdır. Konfigürasyon değişiklikleri ile hayatta kalabilir. Bu nedenle, etkinliği yok ederseniz veya telefonunuzun yönünü değiştirirseniz ViewModel ve verileri kaybetmezsiniz. ViewModel sınıfının altına yerleştirilen LiveData örneği nedeniyle, bizim tarafımızdan girdi gerekli değildir.

Kullanıcı arabirimindeki tutucu verilerinin kullanıcı arabirimi yaşam döngüsü hakkında endişelenmenize gerek yok. ViewModel, bir fabrika aracılığıyla otomatik olarak oluşturulacak ve kendi başınıza oluşturma ve yıkma işlemleriyle uğraşmanıza gerek yok.

  • Bir ViewModel uygulayın

 Aşağıdaki örnek kodla gösterilmiştir:
genel sınıf MyViewModel, ViewModel'i genişletir {
özel MutableLiveData<List<Students>> öğrencileri;
public LiveData<List<Students>> getStudents () {
if ( öğrenciler == boş) {
öğrenciler = new MutableLiveData<List<Students>>();
loadStudents();
}
dönüş öğrencileri;
}
private void loadStudents () {
// Öğrencileri getirmek için eşzamansız bir işlem yapın.
}
}

Bu listeye aşağıdaki gibi bir aktiviteden erişebilirsiniz:

 public class MyActivity, AppCompatActivity'yi genişletir {
public void onCreate(Bundle saveInstanceState) {
// Sistem bir aktivitenin onCreate() yöntemini ilk çağırdığında bir ViewModel oluşturun.
// Yeniden oluşturulan etkinlikler, ilk etkinlik tarafından oluşturulan aynı MyViewModel örneğini alır.
MyViewModel modeli = ViewModelProviders.of(this).get(MyViewModel.class);
model.getStudents ().gözlem(bu, öğrenciler -> {
// kullanıcı arayüzünü güncelle
});
}
}

4. Oda

Room bir veritabanı kütüphanesidir ve SQLite veritabanı için harika bir alternatiftir. SQLite veritabanını kullanmak için her zaman çok sayıda ortak bilgi yazmak gerekir. Model sınıfında ek açıklamalar ekleyerek veritabanı tanımlayabiliriz. Kitaplık, bir cihazda uygulama verilerinin önbelleğini oluşturmaya yardımcı olur. OrmLite'a çok benzer.

Odada 3 ana bileşen vardır:

a. Veri tabanı

Uygulamanız kalıcı olduğundan, ilişkisel veriler olduğundan ve veritabanı sahibini içerdiğinden, @Database ile açıklamalı sınıfa yönelik temel bağlantı için ana erişim noktası görevi görür, aşağıdaki koşulları karşılamalıdır:

RoomDatabase'i genişleten soyut bir sınıf olun.

Ek açıklamayı içeren veritabanına bağlı varlıkların listesini ekleyin.

@Dao ile açıklama eklenmiş ve 0 bağımsız değişkeni olan soyut bir yöntem içeren sınıfı döndürür.

Çalışma zamanındayken Room.inMemoryDatabaseBuilder() veya Room.databaseBuilder() öğesini çağırarak bir veritabanı örneği alabilirsiniz.

B. varlık

Veritabanı içindeki bir tabloyu temsil eder.

C. DAO

Veritabanına erişmek için kullanılan yöntemleri içerir.

  • varlık oluşturma

 @Varlık
genel sınıf Kullanıcı {
@Birincil anahtar
özel int uid;
@ColumnInfo(ad = "ilk_ad")
private String firstName;
@ColumnInfo(ad = "son_ad")
özel Dize soyadı;

// Alıcılar ve ayarlayıcılar kısalık için yok sayılır,
// ancak Room'un çalışması için gereklidirler.
}
  • Veritabanı yarat

 @Database(varlıklar = {User.class}, sürüm = 1)
genel soyut sınıf AppDatabase, RoomDatabase'i genişletir {
özel statik AppDatabase ÖRNEK;
genel statik AppDatabase getDatabase(Bağlam bağlamı) {
if (ÖRNEK == boş) {
ÖRNEK = Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, "my_db").build();
}
dönüş ÖRNEK;
}
}

Bu sınıf, veritabanını oluşturmak ve bir örneğini almak için kullanılır. Aşağıdaki kodu kullanarak veritabanını oluşturuyoruz.

Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, “my_db”).build();

  • Veri Erişim Nesnesini Oluşturun

@Dao notuyla sınıfa açıklama ekleyin. Daha sonra Room tarafından, arabirimde tanımlanan yöntemleri uygulayan bir sınıf uygulaması oluşturulacaktır (Güçlendirmenin nasıl çalıştığına çok benzer).

 @Dao
genel arayüz UserDao {
@Query("SEÇ * KULLANICIDAN")
Liste<Kullanıcı> getAll();
@Query("SELECT * FROM user WHERE uid IN (:userIds)")
List<User> loadAllByIds(int[] userIds);

@Query("SELECT * FROM user WHERE first_name LIKE :first AND "
+ "soyadı GİBİ :son SINIR 1")
Kullanıcı findByName(Önce dize, son dize);

@Sokmak
void insertAll(Kullanıcı... kullanıcılar);

@Silmek
geçersiz silme(Kullanıcı kullanıcı);
}

Çözüm

Bu makale size android mimarisi bileşenleri hakkında temel bilgiler verir. Uygulama geliştirme sırasında geliştiricinin karşılaştığı tüm ilgili sorunları çözen yeni önerilen android mimarisi ile ilgili tüm konuları dahil etmeye çalıştık. Yine de, herhangi bir sorun bulursanız , Elsner Technology'nin Android Geliştiricisini Kiralamayı düşünün.