Activitylar o'rtasidagi o'zaro ta'sir



Download 58,99 Kb.
Sana17.07.2022
Hajmi58,99 Kb.
#814119
Bog'liq
Activity


Activitylar o'rtasidagi o'zaro ta'sir

Oldingi mavzularda biz Intent obyekti yordamida faoliyatning hayot aylanishi va yangi faoliyatni ishga tushirishni yoritgan edik. Endi bitta ilovadagi faoliyatlar o'rtasidagi o'zaro ta'sirning ba'zi xususiyatlarini ko'rib chiqamiz. Aytaylik, bizda uchta faoliyat mavjud: MainActivity, SecondActivity va ThirdActivity.





Intent bilan, masalan, tugma bosilganda, MainActivity SecondActivity-ni ishga tushiradi:

1
2

Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);

SecondActivity-da ThirdActivity-ni ishga tushiradigan tugma ham mavjud:

1
2

Intent intent = new Intent(this, ThirdActivity.class);
startActivity(intent);

ThirdActivity-da birinchi faoliyatga qaytadigan tugma ham mavjud - MainActivity:

1
2

Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);


Agar biz barcha harakatlarni ketma-ket ishga tushiradigan bo'lsak: asosiy MainActivity-dan biz SecondActivity-ni, SecondActivity-dan - ThirdActivity-ni ishga tushirsak, oxirida biz quyidagi faoliyat stekiga ega bo'lamiz:
Uchinchi faoliyat
Ikkinchi faoliyat
Asosiy faoliyat
Agar bundan keyin biz ThirdActivity-dan MainActivity-ga murojaat qilmoqchi bo'lsak, startActivity() usuli yangi MainActivity ob'ektini ishga tushiradi (mavjud ob'ektga qaytmaydi) va stek allaqachon shunday ko'rinadi:
Asosiy faoliyat
Uchinchi faoliyat
Ikkinchi faoliyat
Asosiy faoliyat
Ya'ni, bizda MainActivity-ning ikkita mustaqil nusxasi bo'ladi. Agar biz mavjud bo'lgan joyga o'tmoqchi bo'lsak, bu pozitsiya istalmagan. Va bu nuqta e'tiborga olinishi kerak.
Agar Orqaga tugmasini bossak, u holda stekning yuqori qismida joylashgan joriy faoliyat stekdan o'chiriladi va oldingi faoliyat stekning yuqori qismida bo'lib, o'z ishini davom ettiradi. Shunday qilib, Orqaga tugmasidan foydalanib, biz stekdagi oldingi faoliyatga o'tishimiz mumkin. Masalan, yuqoridagi holatda Orqaga tugmasini bossak, u holda stekning yuqori qismidagi MainActivity o'z ishini tugatadi va ekranda ThirdActivity ko'rsatila boshlaydi.
Uchinchi faoliyat
Ikkinchi faoliyat
Asosiy faoliyat
Biroq, ba'zida faoliyatlar orasidagi o'tishni boshqarish kerak bo'ladi. Misol uchun, bu holda, biz ThirdActivity-dagi tugmani bosganimizda MainActivity-ning yangi nusxasini ishga tushirishni xohlamaymiz, shunchaki birinchi bo'lib ishga tushirilgan va stekning eng quyi qismida joylashgan MainActivity-ga o'tish o'rniga. Keling, Android bizga taqdim etadigan imkoniyatlarni ko'rib chiqaylik.

Faoliyat stekini boshqarish


Faoliyatdan stekni boshqarish uchun Android bayroqlardan foydalanishni taklif qiladi - Intent sinfida belgilangan konstantalar. Muayyan bayroqni qo'llash bizga ma'lum harakatlar uchun ma'lum bir tarzda stekdagi pozitsiyani o'zgartirishga imkon beradi.


Masalan, oldingi vazifani olaylik, ThirdActivity-dagi tugmani bosgandan so'ng, MainActivity-ning yangi nusxasi ishga tushiriladi. Ammo biz yangisini ishga tushirmoqchi emasmiz, balki mavjudiga o'tamiz.
Asosiy faoliyat
Uchinchi faoliyat
Ikkinchi faoliyat
Asosiy faoliyat
Ushbu vaziyatdan chiqish uchun Intent.FLAG_ACTIVITY_REORDER_TO_FRONT bayrog'idan foydalanishimiz mumkin:

1
2
3

Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);

Intent.FLAG_ACTIVITY_REORDER_TO_FRONT bayrog'i, agar u stekda bo'lsa, o'tkazilayotgan faoliyatni stekning yuqori qismiga ko'chiradi. Va bu holda, ThirdActivity-dan MainActivity-ga o'tgandan so'ng, stek quyidagicha ko'rinadi:
Asosiy faoliyat
Uchinchi faoliyat
Ikkinchi faoliyat
Agar biz ThirdActivity-dan MainActivity-ga o'tishimiz kerak bo'lsa, xuddi Orqaga tugmasi yordamida orqaga qaytgandek, biz Intent.FLAG_ACTIVITY_CLEAR_TOP va Intent.FLAG_ACTIVITY_SINGLE_TOP bayroqlaridan foydalanishimiz mumkin:

1
2
3

Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);

Intent.FLAG_ACTIVITY_CLEAR_TOP bayrog'i ishga tushirilayotganidan tashqari (agar u stekda bo'lsa) barcha harakatlarni o'chiradi. Va Intent.FLAG_ACTIVITY_SINGLE_TOP bayrog'i agar stekning yuqori qismida ishga tushirilishi kerak bo'lgan faollik mavjud bo'lsa, u BO'LIB BO'LMAYDI (keyin u stekda faqat bitta shaklda mavjud bo'lishi mumkin) ekanligini bildiradi.
Bu holda, ThirdActivity-dan MainActivity-ga o'tgandan so'ng, stek to'liq tozalanadi va u erda faqat MainActivity qoladi.
Boshqa belgi - Intent.FLAG_ACTIVITY_NO_HISTORY ishga tushirilgan faoliyatni stekda saqlamaslikka imkon beradi. Misol uchun, SecondActivity-ni ishga tushirganda, biz uni stekda saqlashni xohlamaymiz:

1
2
3

Intent intent = new Intent(this, SecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);

Bunday holda, MainActivity -> SecondActivity -> ThirdActivity zanjiri orqali o'tayotganda stek quyidagicha ko'rinadi:

MainActivity

ThirdActivity

Download 58,99 Kb.

Do'stlaringiz bilan baham:




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