Konfiguratsiyani o'zgartirish paytida ob'ektni saqlab qolish
Faoliyatingizni qayta ishga tushirish uchun katta hajmdagi maʼlumotlarni qayta tiklashingiz, tarmoq ulanishini qayta tiklashingiz yoki boshqa intensiv operatsiyalarni bajarishingiz kerak boʻlsa, konfiguratsiya oʻzgarishi sababli toʻliq qayta ishga tushirish foydalanuvchi tajribasini sekinlashtirishi mumkin. Bundan tashqari, tizim sizga qayta qo'ng'iroq qilish orqali saqlaydigan faoliyat holatini to'liq tiklash imkonsiz bo'lishi mumkin - u katta ob'ektlarni (masalan, bitmaplar) tashish uchun mo'ljallanmagan va undagi ma'lumotlarni ketma-ketlashtirish, keyin seriyadan chiqarish kerak. ko'p xotirani iste'mol qilishi va konfiguratsiyani sekin o'zgartirishi mumkin bo'lgan asosiy ipda. Bunday vaziyatda a dan foydalanib, faoliyatingizning bir qismini qayta ishga tushirish yukini engillashtirasiz onSaveInstanceState()ViewModel ob'ekt. ViewModels konfiguratsiya oʻzgarishlari davomida saqlanadi, shuning uchun ular foydalanuvchi interfeysi maʼlumotlarini qayta soʻramasdan saqlash uchun eng zoʻr joydir.
Konfiguratsiyani o'zgartirishni o'zingiz hal qiling
Agar ma'lum konfiguratsiya o'zgarishi paytida ilovangiz resurslarni yangilashi shart bo'lmasa va sizda faoliyatni qayta ishga tushirishni oldini olishni talab qiladigan ishlash cheklovi mavjud bo'lsa, u holda sizning faoliyatingiz konfiguratsiya o'zgarishini o'zi boshqarishini e'lon qilishingiz mumkin, bu esa tizimning faoliyatingizni qayta ishga tushirishiga to'sqinlik qiladi. ’
<activity>Faoliyatingiz konfiguratsiyani oʻzgartirishni amalga oshirishini eʼlon qilish uchun manifest faylingizdagi tegishli elementni oʻzgartiring va atributni oʻzingiz bajarmoqchi boʻlgan konfiguratsiyani android:configChanges ifodalovchi qiymatga kiriting. android:configChanges . Mumkin qiymatlar atribut uchun hujjatlarda keltirilgan. Eng ko'p ishlatiladigan qiymatlar "orientation", "screenSize", "screenLayout"va "keyboardHidden":
Qiymat "orientation"ekran yo'nalishi o'zgarganda qayta ishga tushirishni oldini oladi.
Qiymat "screenSize", shuningdek, yo'nalish o'zgarganda qayta ishga tushirishni oldini oladi, lekin faqat Android 3.2 (API darajasi 13) va undan yuqori versiyalar uchun.
Qiymat "screenLayout" yig’iladigan telefonlar va konvertatsiya qilinadigan Chromebooklar kabi qurilmalar tomonidan qo‘zg‘atilishi mumkin bo‘lgan o‘zgarishlarni aniqlash uchun zarur.
Qiymat "keyboardHidden"klaviatura mavjudligi o'zgarganda qayta ishga tushirishni oldini oladi.
Agar siz ilovangizdagi yoʻnalish oʻzgarishlarini qoʻlda bajarmoqchi boʻlsangiz, atributlarda "orientation", "screenSize"va "screenLayout"qiymatlarni eʼlon qilishingiz kerak. android: configChangesSiz atributda bir nechta konfiguratsiya qiymatlarini quvur |belgisi bilan ajratib e'lon qilishingiz mumkin.
Masalan, quyidagi manifest kodi ham ekran yoʻnalishini oʻzgartirish, ham klaviatura mavjudligini oʻzgartirish bilan shugʻullanadigan faoliyatni eʼlon qiladi:
Endi, ushbu konfiguratsiyalardan biri o'zgarganda, MyActivityqayta ishga tushmaydi. Buning o'rniga, MyActivityqo'ng'iroqni qabul qiladi. Ushbu usul yangi qurilma konfiguratsiyasini belgilaydigan ob'ektga o'tkaziladi. dagi maydonlarni o'qish orqali siz yangi konfiguratsiyani aniqlashingiz va interfeysingizda foydalanilgan resurslarni yangilash orqali tegishli o'zgarishlarni amalga oshirishingiz mumkin. Ushbu usul chaqirilganda, faoliyatingiz ob'ekti yangi konfiguratsiyaga asoslangan resurslarni qaytarish uchun yangilanadi, shuning uchun tizim faoliyatingizni qayta ishga tushirmasdan UI elementlarini osongina tiklashingiz mumkin. onConfigurationChanged() ConfigurationConfigurationResources
Masalan, quyidagi onConfigurationChanged() dastur qurilmaning joriy yo'nalishini tekshiradi:
Ob'ekt faqat o'zgartirilganlarni emas, balki barcha joriy konfiguratsiyalarni ifodalaydi. Ko'pincha, konfiguratsiya qanday o'zgarganligi sizni qiziqtirmaydi va siz ishlatayotgan konfiguratsiyaga muqobil variantlarni taqdim etadigan barcha resurslaringizni qayta tayinlashingiz mumkin. Misol uchun, Resourcesob'ekt hozir yangilanganligi sababli, istalgan ImageViews bilan qayta o'rnatishingiz mumkin setImageResource() va yangi konfiguratsiya uchun mos manba ishlatiladi ( Resurslarni taqdim etishda tasvirlanganidek).
Maydonlardagi qiymatlar sinfdagi Configurationaniq konstantalarga mos keladigan butun sonlar ekanligiga e'tibor bering.
Agar ushbu konfiguratsiya oʻzgarishlari asosida ilovangizni yangilashingiz shart boʻlmasa, uni amalga oshira olmaysiz. Bunday holda, konfiguratsiya o'zgarishidan oldin foydalanilgan barcha resurslar hali ham ishlatiladi va siz faqat faoliyatingizni qayta boshlashdan qochgansiz. Biroq, sizning ilovangiz har doim o'zining avvalgi holati bilan o'chirilishi va qayta ishga tushishi mumkin bo'lishi kerak, shuning uchun siz ushbu texnikani normal faoliyatning hayot aylanishi davomida o'z holatingizni saqlab qolishdan qochish deb hisoblamasligingiz kerak. Nafaqat boshqa konfiguratsiya oʻzgarishlari mavjudligi sababli, siz ilovangizni qayta ishga tushirishga toʻsqinlik qila olmaysiz, balki foydalanuvchi ilovangizni tark etganda va foydalanuvchi unga qaytgunga qadar u yoʻq boʻlib ketishi kabi hodisalarni boshqarishingiz kerakligi uchun ham.
Do'stlaringiz bilan baham: |