Semua Yang Perlu Anda Ketahui Tentang Komponen Arsitektur Android
Diterbitkan: 2022-01-02Komponen Arsitektur
Arsitektur adalah rencana tetap yang perlu dibuat sebelum proses pengembangan dimulai. Komponen arsitektur menjaga aplikasi tetap terorganisir, mengikat semua komponen bersama-sama dan menyediakan koleksi perpustakaan yang membantu Anda merancang aplikasi yang kuat, dapat diverifikasi, dan dapat dipelihara. Arsitektur baru Android menyarankan beberapa prinsip utama untuk membuat aplikasi yang ideal dengan keamanan dan menghindari kelas yang membengkak yang sulit untuk dipelihara dan diuji.
Blok bangunan
Contoh dasar untuk blok penyusun adalah Aktivitas, Tampilan, Maksud, Layanan, Fragmen, File Manifes, AVD (Perangkat Virtual Android). Blok-blok ini adalah representasi dari arsitektur komponen aplikasi rasional dan juga merupakan tanda dari poin rasa sakit pengembang.
Set pertama membantu Anda dengan
- Kelola aktivitas dan siklus hidup fragmen Anda secara otomatis untuk menghindari kebocoran memori dan sumber daya
- Pertahankan objek data Java ke database SQLite
Komponen:
1. Komponen Siklus Hidup
Komponen ini digunakan untuk menambah kesadaran siklus hidup. Komponen siklus hidup mencakup Siklus Hidup, Pemilik Siklus Hidup, dan LifecycleObserver
Lingkaran kehidupan
Sejauh ini siklus hidup adalah kelas abstrak yang dikelola oleh sistem itu sendiri. Namun dalam skenario saat ini, Siklus Hidup mengidentifikasi status komponen dan berperilaku & mengakhiri tugas yang sesuai pada waktu yang tepat.
Pemilik Siklus Hidup
LifecycleOwner adalah antarmuka yang dapat diimplementasikan untuk mendapatkan objek siklus hidup dari metode getLifecycle(). ProcessLifecycleOwner berguna saat Anda ingin mengelola siklus hidup seluruh proses.
Siklus HidupPengamat
LifecycleObserver mengamati komponen LifecycleOwner seperti Aktivitas dan Fragmen. Ia menerima LifecycleOwner.Event dan bereaksi terhadapnya melalui metode anotasi.
Dengan menerapkan ini semua bersama-sama, kita dapat membuat aplikasi sadar Siklus Hidup.
Menerapkan pengamat Siklus Hidup
kelas publik TestObserver mengimplementasikan LifecycleObserver {
public MyObserver(Siklus hidup siklus) {
// Memulai observasi siklus hidup
lifecycle.addObserver(ini);
...
}
// Metode beranotasi dipanggil saat siklus hidup terkait melewati peristiwa ini
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
public void onResume() {
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
public void onPause() {
}
}
Sekarang kita dapat menggunakan pengamat ini dalam komponen aplikasi kita, menggunakan implementasi berikut TestObserver observer = new TestObserver(aLifecycleOwner.getLifecycle());
2. Data Langsung
Komponen LiveData adalah pemegang data yang berisi nilai yang dapat diamati. Dengan livedata setiap kali Aktivitas atau Fragmen diperbarui, kami akan mendapatkan pemberitahuan sehingga UI Anda akan selalu diperbarui. Ini adalah pembungkus model khas Anda yang memberi tahu pengamat ketika sesuatu berubah dalam model itu. Keuntungan utama dari livedata adalah tidak ada lagi kebocoran memori dan NullPointerExceptions karena tampilan yang tidak ada.
Buat objek LiveData
kelas publik MyViewModel memperluas ViewModel {
// Buat LiveData dengan String
pribadi MutableLiveData<String> mData;
public MutableLiveData<String> getData() {
if ( mData == null) {
mData = new MutableLiveData<String>();
}
kembali mData;
}
}
Amati objek LiveData
Kode berikut mengilustrasikan cara mengamati objek LiveData:
MyActivity kelas publik memperluas AppCompatActivity {
public void onCreate(Bundle saveInstanceState) {
super.onCreate(savedInstanceState);
Model MyViewModel = ViewModelProviders.of(this).get(MyViewModel .class);
model.getData().observe(ini, data -> {
// perbarui UI
});
}
}3. Lihat Model
ViewModel berguna untuk menyediakan dan memelihara data untuk komponen UI Anda (Aktivitas atau Fragmen) dengan cara yang sadar akan siklus hidup. Ia mampu bertahan melalui perubahan konfigurasi. Jadi, jika Anda menghancurkan aktivitas atau mengubah orientasi ponsel, Anda tidak akan kehilangan ViewModel dan data. Karena instance LiveData ditempatkan di bawah kelas ViewModel, input dari pihak kami tidak diperlukan.
Anda tidak perlu khawatir tentang siklus hidup UI dari data pemegang di UI. ViewModel akan dibuat secara otomatis melalui pabrik dan Anda tidak perlu menangani pembuatan dan pembongkarannya sendiri.

Menerapkan ViewModel
Ini diilustrasikan oleh kode contoh berikut:
kelas publik MyViewModel memperluas ViewModel {
private MutableLiveData<List<Students>> siswa;
publik LiveData<Daftar<Siswa>> getStudents () {
if ( siswa == null) {
siswa = new MutableLiveData<Daftar<Siswa>>();
memuatSiswa();
}
siswa kembali;
}
private void loadStudents () {
// Lakukan operasi asinkron untuk mengambil siswa.
}
}Anda dapat mengakses daftar ini dari aktivitas sebagai berikut:
MyActivity kelas publik memperluas AppCompatActivity {
public void onCreate(Bundle saveInstanceState) {
// Buat ViewModel saat pertama kali sistem memanggil metode onCreate() aktivitas.
// Aktivitas yang dibuat ulang menerima instance MyViewModel yang sama yang dibuat oleh aktivitas pertama.
Model MyViewModel = ViewModelProviders.of(this).get(MyViewModel.class);
model.getStudents ().observe(ini, siswa -> {
// perbarui UI
});
}
}4. Kamar
Room adalah perpustakaan database & alternatif yang bagus untuk database SQLite. Untuk menggunakan database SQLite selalu diperlukan untuk menulis banyak boilerplate. Kita dapat mendefinisikan database dengan menambahkan anotasi di kelas Model. Pustaka membantu membuat cache data aplikasi di perangkat. Ini sangat mirip dengan OrmLite.
Ada 3 komponen utama dalam Room:
sebuah. Basis Data
Saat aplikasi Anda bertahan, data relasional dan berisi pemegang database, Ini berfungsi sebagai titik akses utama untuk koneksi yang mendasari ke kelas yang dianotasi dengan @Database harus memenuhi ketentuan berikut:
Jadilah kelas abstrak yang memperluas RoomDatabase.
Sertakan daftar entitas yang terhubung dengan database yang menggabungkan anotasi.
Ini mengembalikan kelas yang dianotasi dengan @Dao dan berisi metode abstrak yang memiliki 0 argumen.
Saat runtime, Anda bisa mendapatkan instance database dengan memanggil Room.inMemoryDatabaseBuilder() atau Room.databaseBuilder().
B. Kesatuan
Mewakili tabel dalam database.
C. DAO
Berisi metode yang digunakan untuk mengakses database.
Membuat entitas
@Kesatuan
Pengguna kelas publik {
@Kunci utama
uid int pribadi;
@ColumnInfo(nama = "nama_depan")
Nama depan String pribadi;
@ColumnInfo(nama = "nama_belakang")
Nama belakang String pribadi;
// Getter dan setter diabaikan untuk singkatnya,
// tapi mereka diperlukan agar Room berfungsi.
}Buat database
@Database(entitas = {User.class}, versi = 1)
kelas abstrak publik AppDatabase memperluas RoomDatabase {
INSTANCE AppDatabase statis pribadi;
publik statis AppDatabase getDatabase(Konteks konteks) {
if (INSTANSI == null) {
INSTANCE = Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, "my_db").build();
}
kembali INSTAN;
}
}Kelas ini digunakan untuk membuat database dan mendapatkan turunannya. Kami membuat database menggunakan kode berikut.
Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, “my_db”).build();
Buat Objek Akses Data
Beri anotasi pada kelas dengan anotasi @Dao. Implementasi kelas kemudian akan dihasilkan oleh Room yang mengimplementasikan metode yang ditentukan dalam antarmuka (sangat mirip dengan cara kerja Retrofit).
@Dao
antarmuka publik UserDao {
@Query("PILIH * DARI pengguna")
Daftar<Pengguna> getAll();
@Query("PILIH * DARI pengguna WHERE uid IN (:userIds)")
Daftar<Pengguna> loadAllByIds(int[] userIds);
@Query("SELECT * FROM user WHERE first_name LIKE :first AND "
+ "nama_belakang SEPERTI: LIMIT terakhir 1")
Pengguna findByName(String pertama, String terakhir);
@Menyisipkan
void insertAll(Pengguna... pengguna);
@Menghapus
batal hapus (Pengguna pengguna);
}Kesimpulan
Artikel ini memberi Anda pengetahuan dasar tentang komponen arsitektur android. Kami telah mencoba memasukkan semua topik yang terkait dengan arsitektur android yang baru diusulkan yang menyelesaikan semua masalah relevan yang dihadapi oleh pengembang saat pengembangan aplikasi. Namun, jika Anda menemukan masalah, pertimbangkan Hire Android Developer of Elsner Technology .
