Ma'lumotlarni bog'lash
Ma'lumotlarni ulash kutubxonasi ViewModel-dagi o'zgarishlarni to'g'ridan-to'g'ri View XML ichida kuzatish imkonini beradi. Bu sizni koddagi Koʻrishlar bilan bogʻlash uchun odatda talab qilinadigan standart kodni yozishdan qutqaradi.
Paging
Peyging kutubxonasi ma'lumotlarni kichik bo'laklarga yuklash va ko'proq ma'lumotlar yuklanganda UI-ni yangilash orqali ro'yxatlarni (ayniqsa cheksiz) ko'rsatishga yordam beradi.
Ushbu mavzu haqida ko'proq bilish uchun ushbu qo'llanmani o'qing: www.raywenderlich.com/6948-paging-library-for-android-with-kotlin-creating-infinite-lists .
Navigatsiya
Navigatsiya arxitekturasi komponenti XML grafik yoki Android Studio ning soʻnggi versiyasiga oʻrnatilgan grafik muharriri orqali ilovangiz boʻylab navigatsiyani belgilash imkonini beradi. Qozon kodi orqali hammasini o'zingiz hal qilishda qiyinchiliklarni kamaytiradi.
Ushbu qo'llanma ushbu kutubxonadan foydalanishni boshlashingizga yordam beradi: www.raywenderlich.com/6014-the-navigation-architecture-component-tutorial-getting-started .
Ish menejeri
WorkManager kutubxonasi kafolatlangan bajarilishini talab qiluvchi kechiktiriladigan fon vazifalarini boshqaradi.
Qo'shimcha ma'lumot olish uchun ushbu qo'llanmani o'qing: www.raywenderlich.com/6040-workmanager-tutorial-for-android-getting-started .
Android arxitektura komponentlaridan foydalanish
Voy! Bu komponentlarning uzoq ro'yxati edi. Ularni bir-biriga bog'lash juda qiyin vazifa bo'lishi mumkin, ammo arxitektura haqida gapirganda ularning har biri juda muhim rol o'ynaydi. Ushbu bo'limda siz WeWatch ilovasi ushbu komponentlarning ayrimlaridan qanday foydalanishini ko'rib chiqasiz.
Room
Ushbu kitob davomida namunaviy loyiha ma'lumotlar bazasi operatsiyalari uchun Room kutubxonasidan foydalanadi.
MVC 2-bobidagi boshlang'ich loyihani oching va u qanday amalga oshirilayotganini ko'rish uchun kodni ko'rib chiqing. Xususan, Movie.ktʼdagi harakatlanuvchi obyektni, MovieDao.kt dagi maʼlumotlarga kirish obyektini, LocalDatabase.kt dagi maʼlumotlar bazasi sinfini va LocalDataSource.kt dagi maʼlumotlar manbai sinfini oching va koʻrib chiqing.
WeWatch-da qiziqishning asosiy ma'lumotlar obyekti hisoblanadi Movie va ilova har bir filmni ma'lumotlar bazasi jadvalida qator sifatida saqlash orqali foydalanuvchining filmlar ro'yxatini saqlab qoladi. Xona yordamida ma'lumotlar bazasidagi sinfni movie_table ifodalovchi jadvalni yaratish oson. Movie
Maydonlarini to'g'ridan-to'g'ri ma'lumotlar bazasi jadvalida ko'rsatmoqchi bo'lgan har qanday sinf uchun @Entitysinf deklaratsiyasining yuqoridagi izohidan foydalaning. Odatiy bo'lib, bu sinf bilan bir xil nomdagi jadvalni yaratadi. Movie.kt tableName da qilinganidek ni aniq belgilash orqali jadvalga boshqa nom berishingiz mumkin:
Odatiy bo'lib, ushbu jadval uchun ustunlar ushbu sinf uchun konstruktordagi maydonlar bilan bir xil nomga ega, masalan id, title va releaseDate. Agar ustun sinfdagi maydon nomidan boshqa nomga ega bo'lishini istasangiz, maydon @ColumnInfo oldidagi izohdan foydalanishingiz mumkin. Jadval uchun asosiy kalitni o'rnatish uchun @PrimaryKey izohdan foydalaning. Kino jadvali holatida asosiy kalit id:
Keyinchalik ushbu jadvalda qidirish, qo'shish va o'chirish kabi operatsiyalar mavjud. Ilova ushbu operatsiyalarga ma'lumotlarga kirish ob'ektlari (DAO) orqali kiradi. @Dao Odatda, har bir jadval izoh yordamida ko'rsatilgan o'z DAO interfeysiga ega. Filmlar jadvali uchun DAO boʻlgan MovieDao.kt ni oching va undagi quyidagi CRUD (Yaratish, oʻqish, yangilash, oʻchirish) operatsiyalariga qarang:
Funktsiya uchun har bir operatsiya turi o'z izohi bilan etiketlanadi: @Insert, @Query va @Update ma'lumotlar bazasidagi ma'lumotlarni o'zgartirish uchun tegishli SQLite so'rovi kiritilgan.
Keyinchalik, Xona ma'lumotlar bazasi ob'ektining o'zini e'lon qilishingiz kerak. LocalDatabase.kt ni oching va bu qanday amalga oshirilishini ko'rib chiqing:
LocalDatabase mavhum bo'lib, dan meros oladi RoomDatabase. U ushbu ma'lumotlar bazasidagi ob'ektlarni (ushbu ma'lumotlar bazasidagi jadvallarga @Database mos keladigan) va versiya raqamini ko'rsatadigan Xona izohi bilan belgilangan.
WeWatch ma'lumotlar bazasidagi yagona ob'ekt - bu Kino ob'ekti, shuning uchun ro'yxatga olingan narsa. Ma'lumotlar bazasi uchun versiya raqami - bu ma'lumotlar bazasi sxemasi o'zgarsa, ma'lumotlar bazasini ko'chirish uchun oshirish kerak bo'lgan raqam - lekin hozir bu haqda tashvishlanmang. LocalDatabase.kt klassi keyin Xona ma'lumotlar bazasini yaratadi, masalan:
Singleton naqsh ilovada faqat bir marta Xona maʼlumotlar bazasini yaratish uchun ishlatiladi. Ma'lumotlar bazasining namunasi LocalDataSource.kt da sodir bo'ladi. Ushbu faylni oching va ma'lumotlar bazasining yagona nusxasi bu erda joylashganligini ko'rasiz:
LocalDatabase ilova uchun ma'lumotlar manbai bo'lib, ma'lumotlar bazasidan ilovaning qolgan qismiga filmlar ro'yxatini taqdim etadi. LocalDatabase DAO ning boshqa ma'lumotlar bazasi qo'ng'iroqlarini ochish uchun ilovaning qolgan qismi uchun aloqa nuqtasi sifatida ham ishlaydi. Istalgan vaqtda DAO dan ma'lumotlar bazasi qo'ng'irog'i ilovaning biror joyida kerak bo'lganda, qo'ng'iroq qiluvchi Faoliyat ning misolini oladi LocalDatabase va qo'ng'iroq insert() qiladi delete() va update().
LiveData
Ushbu kitobning ba'zi boblarida siz RxJava kutubxonasidan asinxron veb-qo'ng'iroqlar va Schedulers.io () mavzu bo'yicha ma'lumotlar bazasi operatsiyalarini bajarish va ulardan javoblarni olish uchun foydalanasiz MainThread. MVVM boblarida RxJava - ga alternativa taqdim etiladi: LiveDat.
LiveData - bu ob'ekt RxJava-da bo'lgani kabi reaktiv tarzda chiqarmoqchi bo'lgan ob'ektlarni o'rab oladigan hayot aylanishidan xabardor komponent Observable. LiveData "jonli" ma'noda, ya'ni asosiy ma'lumotlar yangilanganda, ushbu ma'lumotlarni kuzatadigan har qanday narsa ham yangilanishlarni oladi. Masalan, Xona bilan bog'langanda, Xona ma'lumotlar bazasidan olingan LiveData ma'lumotlar bazasidagi ma'lumotlar o'zgarganda avtomatik ravishda yangilanadi.
MVVM bilan Android Architecture Components bo'limi loyihasida MovieDao.kt klassi ma'lumotlar bazasidan LiveData sifatida filmlar ro'yxatini qaytaradi, masalan:
LiveData haqida ko'proq ma'lumot olish uchun 11-bobni o'qing: Android arxitektura komponentlari bilan MVVM.
ViewModel
Faoliyatlar va Android hayotiy sikli bilan bog'liq muammolardan biri shundaki, agar Faoliyat yo'q qilinsa, ushbu faoliyatga tegishli ma'lumotlar ham yo'q qilinadi. Xo'sh, qanday qilib Faoliyat qayta tiklangandan so'ng uni avvalgi holatiga qaytarishingiz mumkin? Faoliyat orqali ba'zi bir holatni saqlash mumkin onSaveInstanceState (outState: Bundle?), ammo bu yechim og'ir va murakkabroq ma'lumotlar uchun ishlamaydi.
Do'stlaringiz bilan baham: |