Android. Программирование для профессионалов. 4-е издание



Download 21,53 Mb.
Pdf ko'rish
bet71/485
Sana13.07.2022
Hajmi21,53 Mb.
#787165
1   ...   67   68   69   70   71   72   73   74   ...   485
Bog'liq
Android Programmirovanie dlya professionalov 4-e izdanie 2020 Fillips Styuart Marsikano Gardner

questionBank.size
}
}
Ранее мы говорили, что 
ViewModel
хранит все данные,
связанные с потребностями экрана, форматирует их и
облегчает доступ. Это позволяет удалить логику представления
из activity, что, в свою очередь, делает саму activity проще — а
это хорошо. Любая логика, которую вы можете описать в
activity, может быть непреднамеренно затронута жизненным
циклом activity. Кроме того, это позволяет activity отвечать за
обработку только того, что появляется на экране, а не
внутреннюю обработку данных.
Несмотря на вышесказанное, нужно будет оставить функции
updateQuestion()
и 
checkAnswer(Boolean)
в
MainActivity
. Эти функции мы скоро обновим, чтобы они
вызывали свойства нового 
QuizViewModel
, которые вы
добавили. Они находятся именно в 
MainActivity
, чтобы она
была более организованной.
Затем добавим лениво инициализированное свойство,
чтобы хранить экземпляры 
QuizViewModel
, связанные с
activity.


Листинг 4.8. Ленивая инициализация QuizViewModel
(MainActivity.kt)
class MainActivity : AppCompatActivity() {
...
private val quizViewModel: QuizViewModel by
lazy {
ViewModelProviders.of(this).get(QuizVie
wModel::class.java)
}
override fun onCreate(savedInstanceState:
Bundle?) {
...
val provider: ViewModelProvider =
ViewModelProviders.of(this)
val quizViewModel =
provider.get(QuizViewModel::class.java)
Log.d(TAG, "Got a QuizViewModel:
$quizViewModel")
...
}
...
}
Использование 
lazy
допускает применение свойства
quizViewModel
как 
val
, а не 
var
. Это здорово, потому что вам
нужно захватить и сохранить 
QuizViewModel
, лишь когда
создается экземпляр activity, поэтому 
quizViewModel
получает
значение только один раз.
Что еще более важно, использование 
lazy
означает, что
расчет и назначение 
quiz 
View 
Model
не будет происходить,
пока вы не запросите доступ к 
quiz 
View 
Model
впервые. Это


хорошо, потому что вы не можете безопасно получить доступ к
ViewModel
до выполнения 
Activity.onCreate(...)
. Если
вы 
пытаетесь 
вызвать
ViewModelProviders.of(this).get(QuizViewModel::cla
ss.java)
до 
Acti 
vity.onCreate(...)
, ваше приложение
вылетит с исключением 
Illegal 
State 
Exception
.
В заключение обновим 
MainActivity
для отображения
содержимого и взаимодействия с недавно обновленным
QuizViewModel
.

Download 21,53 Mb.

Do'stlaringiz bilan baham:
1   ...   67   68   69   70   71   72   73   74   ...   485




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish